0

如果有多个 elseif,我如何使用 php 的简写?

我知道如何在一个条件下做到这一点,但是当有几个条件时怎么办?

这是这样的:

if($a == 00){ 
 echo 'Clear';
}elseif ($a == 01) {
 echo 'Processing';
} elseif ($a == 10) {
 echo 'Marked for delete';
}
4

7 回答 7

5

您当然可以“链接”三元运算符,但这会导致可怕的代码。不要这样做

根据需要使用if/ else、 aswitch或可能的关联数组。例如,您可以这样做:

$messages = array(
    00 => 'Clear',
    01 => 'Processing',
    10 => 'Marked for delete',
);

echo isset($messages[$a]) ? $messages[$a] : null;

在这种情况下,这不会比iforswitch语句更好,但它是一个需要牢记的有用工具。

于 2013-05-31T07:46:29.140 回答
5

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" : "")));
于 2013-05-31T07:48:40.620 回答
2

使用开关

switch ($a) {
    case 1:
        echo "clear";
        break;
    case 10:
        echo "marked default";
        break;
    default:
        echo "not tracked case";
        break;
}
于 2013-05-31T07:45:53.440 回答
2

永远不应该这样做,它完全不可读但是......

echo ($a==00?"Clear":($a== 01?"Processing":($a == 10?"Marked For Delete":"")));
于 2013-05-31T07:47:03.467 回答
1

你可以这样做:

echo ($a==0 ? 'clear' : ($a==01 ? 'Processing' : ($a==10 ? 'Marked for delete' : '' )));

但是乔恩是对的,不要这样做——正如你所看到的,代码很丑。

于 2013-05-31T07:46:49.833 回答
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;
}
于 2013-05-31T07:55:42.513 回答
0

我认为 switch 语句可能更适合多个 elseif

switch ($a) {
    case "00":
        break;
    case "Clear":
        break;
    default:
        break;
}
于 2013-05-31T07:46:50.630 回答