我認爲這將有助於逐步通過聲明。
//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");
由於所有這些不同的子句的性質,這個整個塊返回'TRUE'到空(order)前面的任何東西。
它是更清潔和更明顯的有:
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;
但是,這會讓人ANGRY。
三元運算符**不是IF **的替換或「簡短形式」,就像'*'運算符不能代替'+' – zerkms
我還沒有仔細觀察三元運算符的正確性,但從一般觀點來看,三元表達式乍看之下比if-else代碼塊更難以理解......這種證明本身就證明了這一點。 – 2011-07-04 01:38:25
不能同意@zerkms – jerluc