php如果有多个其他ifs的速记

时间:2013-05-31 07:42:43

标签: php

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

我知道如何用一个条件来做,但是当有几个时呢?

原因如下:

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

7 个答案:

答案 0 :(得分:5)

你当然可以"链"三元运算符,但这导致可怕的代码。 不要这样做

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

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

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

在这种情况下,这不会比ifswitch语句更好,但它是一个值得注意的有用工具。

答案 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;
}