Я думаю, что это поможет пошагово выполнить это утверждение оператором.
//if empty($order)
(empty($order)) ?
// orderBy = ASC && order = down means if( ASC ) order = down
// since non-empty strings evaluate to true, then empty(order) => orderBy = ASC and order = down
$orderBy="ASC" && $order="down" :
// else (order is not empty) if order = up
(($order=="up") ?
// see above what logic is evaluated here.
$orderBy="ASC" && $order="down" :
// order is not empty and it is not = up
// orderBy = DESC & order = UP
$orderBy="DESC" && $order="up");
Из-за природы всех этих различных предложений, весь этот блок возвращает «ИСТИНА» чему-либо перед пустым (порядок).
Чище и более очевидно иметь:
if( empty( $order ) || $order == 'up' )
{
$orderBy='ASC';
$order='down';
}
else
/* NOTE: No down referenced in original use 'elseif( $order == 'down' ) */
{
$orderBy='DESC';
$order='up';
}
Как минимум, это будет меньше беспокоить других и, честно говоря, это действительно хорошая политика.
Да, и кстати, это:
if (empty($order)) {
$orderBy="ASC";
$order="down";
}
else {
if ($order=="up") {
$orderBy="ASC";
$order="down";
}
elseif ($order=="down") {
$orderBy="DESC";
$order="up";
}
}
Становится:
(empty($order) || $order == 'up')?$oderBy='ASC' && $order = 'down':($order == 'down')?$orderBy = 'DESC' && $order = 'up': /* replace with your default */ FALSE;
Но это сделает людей ЗЛОЙ .