如果是其他运算符的话

时间:2017-09-13 13:27:56

标签: php ternary-operator

我有if语句运算符

$row["column"] = ($example == "H") ? "first" : "second";

我需要为此添加else if条件。需要使用?:编写类似代码的内容。寻找更短的代码方式,有可能吗?

if($example == "H")
{
  $example = "first";
}
else if($example == "K")
{
  $example = "smth different";
}
else if($example == "X")
{
  $example =" third one";
}
else
{
  $example = "go away";
{

4 个答案:

答案 0 :(得分:6)

链接三元运算符并不是一个好主意。更短的代码并不总是意味着它更具可读性!如果您在彼此内部使用多个三元运算符,则很快就会变得不可读。

相反,使用switch检查每个案例。

switch ($example) {
    case "H":
        $example = "first";
        break;
    case "K":
        $example = "smth different";
        break;
    case "X":
        $example =" third one";
        break;
    default:
        $example = "go away";
}

答案 1 :(得分:5)

使用associative array

$map = [
  'H' => 'first',
  'K' => 'smth different',
  'X' => 'third one',
];

$val = 'go away';
if (isset($map[$example])) {
  $val = $map[$example];
}

echo $val;

或使用switch声明:

switch ($example) {
  case 'H':
    $val = 'first';
    break;
  case 'K':
    $val = 'smth different';
    break;
  case 'X':
    $val = 'third one';
    break;
  default:
    $val = 'go away';
    break;
}

echo $val;

答案 2 :(得分:1)

您可以使用switch语句而不是if / else,例如:

switch ($example)
{
    case 'A':
        $example = 'first';
        break;
    case 'B':
        $example = 'second';
        break;
    default:
        $example = 'default';
}

答案 3 :(得分:0)

你可以嵌套它们:

$row["column"] = ($example == "H") ? "first" : $row["column"] = ($example == "K") ? "smth different" : ...;

我也建议使用开关而不是