如果有多個elseif,我該如何使用php的速記?如果速記有多個elseif,則爲php's
我知道如何做到這一點,但有幾種情況?
這是怎麼回事:
if($a == 00){
echo 'Clear';
}elseif ($a == 01) {
echo 'Processing';
} elseif ($a == 10) {
echo 'Marked for delete';
}
如果有多個elseif,我該如何使用php的速記?如果速記有多個elseif,則爲php's
我知道如何做到這一點,但有幾種情況?
這是怎麼回事:
if($a == 00){
echo 'Clear';
}elseif ($a == 01) {
echo 'Processing';
} elseif ($a == 10) {
echo 'Marked for delete';
}
當然你也可以 「鏈」 三元運算符,但其導致可怕的代碼。 不要做。
根據需要使用if
/else
,switch
或可能的關聯數組。例如,你可以這樣做:
$messages = array(
00 => 'Clear',
01 => 'Processing',
10 => 'Marked for delete',
);
echo isset($messages[$a]) ? $messages[$a] : null;
在這種情況下,這會不會是在所有比if
或switch
陳述更好,但它是要記住一個有用的工具。
使用switch
你可以那樣做:
echo ($a==0 ? 'clear' : ($a==01 ? 'Processing' : ($a==10 ? 'Marked for delete' : '')));
但喬恩是正確的,不這樣做 - 你可以看到,代碼是醜陋的。
我認爲switch語句可能更適合於多個ELSEIF的
switch ($a) {
case "00":
break;
case "Clear":
break;
default:
break;
}
你應該NEVER做到這一點,是完全不可讀,但...
echo ($a==00?"Clear":($a== 01?"Processing":($a == 10?"Marked For Delete":"")));
這是非常可讀的格式正確。 – slebetman
在我看來,這有點東西讓PHP成爲只寫語言 – Orangepill
@slebetman其實看着你的文章它的工作原理......從來沒有見過它的方式....我喜歡 – Orangepill
的switch聲明?
switch ($a) {
case 0:
echo "Clear";
break;
case 1:
echo "Processing";
break;
case 2:
echo "Marked for delete";
break;
}
或者你可以使用三元運算:
echo ($a == 0 ? "Clear" :
($a == 1 ? "Processing" :
($a == 2 ? "Marked for delete" : "")));
+1爲可讀的三元運算符:) –
+1同上可讀性。 – Orangepill
一致認爲它比大多數人寫的更具可讀性,但是如果你有很多選項,最後你會得到一串緊密的括號,這並不是很好。我仍然希望使用不同的語法來嵌套三元組。 – Spudley
這裏是例如三元運算符(中的if/else簡寫)
$days = ($month == 2 ? ($year % 4 ? 28 : ($year % 100 ? 29
: ($year %400 ? 28 : 29)))
: (($month - 1) % 7 % 2 ? 30 : 31));
//returns days in the given month
但是,這將是混亂的工作!
所以我更喜歡使用開關盒!
switch ($type) {
case 'a':
$type = 'Type A';
break;
case 'b':
$type = 'Type B';
break;
case 'c':
$type = 'Type C';
break;
default:
break;
}
這是行不通的嗎? – JJJ
它的工作原理。我試圖用if來縮寫例如:($ age> 10?($''''''''''''''''''''''''''''''')' – Norman
如果你這樣做,你會後悔的 - 嵌套的三元組不直觀,並可能導致難以調試的問題,以及如果你需要改變它,你會花費數天的時間再試圖找出它的事實 –