如何在PHP中连接多个三元运算符?

2022-08-30 16:14:52

我经常使用三元运算符,但我似乎无法在彼此内部堆叠多个三元运算符。

我知道堆叠多个三元运算符会使代码的可读性降低,但在某些情况下,我想这样做。

这是我到目前为止尝试过的:

$foo = 1;
$bar = ( $foo == 1 ) ? "1" : ( $foo == 2 ) ? "2" : "other";
echo $bar; // display 2 instead of 1

什么是正确的语法?


答案 1

这些括号是我认为让你得到的。

尝试

$foo = 1;
$bar = ($foo == 1) ? "1" : (($foo == 2)  ? "2" : "other");
echo $bar;

答案 2

问题在于,与所有其他语言不同,PHP使条件运算符保持关联。这会破坏你的代码 - 这在其他语言中会很好。

您需要使用括号:

$bar = $foo == 1 ? "1" : ($foo == 2 ? "2" : "other");

(请注意,我已经从代码中删除了其他括号;但这些括号是正确的,只是多余的。


推荐