如果有多个 elseif,我如何使用 php 的简写?
我知道如何在一个条件下做到这一点,但是当有几个条件时怎么办?
这是这样的:
if($a == 00){
echo 'Clear';
}elseif ($a == 01) {
echo 'Processing';
} elseif ($a == 10) {
echo 'Marked for delete';
}
如果有多个 elseif,我如何使用 php 的简写?
我知道如何在一个条件下做到这一点,但是当有几个条件时怎么办?
这是这样的:
if($a == 00){
echo 'Clear';
}elseif ($a == 01) {
echo 'Processing';
} elseif ($a == 10) {
echo 'Marked for delete';
}
您当然可以“链接”三元运算符,但这会导致可怕的代码。不要这样做。
根据需要使用if
/ else
、 aswitch
或可能的关联数组。例如,您可以这样做:
$messages = array(
00 => 'Clear',
01 => 'Processing',
10 => 'Marked for delete',
);
echo isset($messages[$a]) ? $messages[$a] : null;
在这种情况下,这不会比if
orswitch
语句更好,但它是一个需要牢记的有用工具。
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" : "")));
使用开关
switch ($a) {
case 1:
echo "clear";
break;
case 10:
echo "marked default";
break;
default:
echo "not tracked case";
break;
}
你永远不应该这样做,它完全不可读但是......
echo ($a==00?"Clear":($a== 01?"Processing":($a == 10?"Marked For Delete":"")));
你可以这样做:
echo ($a==0 ? 'clear' : ($a==01 ? 'Processing' : ($a==10 ? 'Marked for delete' : '' )));
但是乔恩是对的,不要这样做——正如你所看到的,代码很丑。
这是三元运算符的示例(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;
}
我认为 switch 语句可能更适合多个 elseif
switch ($a) {
case "00":
break;
case "Clear":
break;
default:
break;
}