如果有多个elseif,我如何使用简写为php?
我知道如何用一个条件来做,但是当有几个时呢?
原因如下:
if($a == 00){
echo 'Clear';
}elseif ($a == 01) {
echo 'Processing';
} elseif ($a == 10) {
echo 'Marked for delete';
}
答案 0 :(得分:5)
你当然可以"链"三元运算符,但这导致可怕的代码。 不要这样做。
根据需要使用if
/ else
,switch
或可能的关联数组。例如,您可以这样做:
$messages = array(
00 => 'Clear',
01 => 'Processing',
10 => 'Marked for delete',
);
echo isset($messages[$a]) ? $messages[$a] : null;
在这种情况下,这不会比if
或switch
语句更好,但它是一个值得注意的有用工具。
答案 1 :(得分:4)
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" : "")));
答案 2 :(得分:2)
使用switch
switch ($a) {
case 1:
echo "clear";
break;
case 10:
echo "marked default";
break;
default:
echo "not tracked case";
break;
}
答案 3 :(得分:2)
你应该从不这样做,这完全不可读但是......
echo ($a==00?"Clear":($a== 01?"Processing":($a == 10?"Marked For Delete":"")));
答案 4 :(得分:1)
你可以这样做:
echo ($a==0 ? 'clear' : ($a==01 ? 'Processing' : ($a==10 ? 'Marked for delete' : '' )));
但Jon是对的,不要这样做 - 正如你所看到的,代码很难看。
答案 5 :(得分:0)
我认为switch语句可能更适合多个elseif的
switch ($a) {
case "00":
break;
case "Clear":
break;
default:
break;
}
答案 6 :(得分:0)
以下是三元运算符的示例(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;
}