Php 短if-else逻辑

Php 短if-else逻辑,php,if-statement,Php,If Statement,为什么会这样 $count = 0; echo $count === 0 ? 'zero' : $count === 1 ? 'one' : 'more'; 回声1?它不应该回零吗?使用括号 echo ($count === 0 ? 'zero' :($count === 1 ? 'one': 'more') ); 您的版本回显“一”的原因是php认为第一个?是语句的一部分,因此如果$count等于零,则执行最后一个可能的操作(last?),即'on

为什么会这样

$count = 0;
   echo $count === 0
    ? 'zero'
    : $count === 1
     ? 'one'
     : 'more';
回声1?它不应该回零吗?

使用括号

echo ($count === 0 ? 'zero' :($count === 1 ? 'one': 'more') );
您的版本回显“一”的原因是php认为第一个
是语句的一部分,因此如果
$count
等于零,则执行最后一个可能的操作(last
),即
'one'


阅读

虽然这是一个很短的值列表,但您也可以使用地图:

$map = array("zero", "one", "more");
echo $map[min($count,2)];     // trick: 2 becomes max value via min()

我读了这个问题。我给出了一个答案,为什么它会和一个相呼应。我给出了一个与他真正想要的相呼应的版本请不要这样滥用三元运算符。这远不如一个简单的
if/else
结构清晰,任何维护你的代码的人(包括三个月后的你)都会因此讨厌你。@meagar,谢谢你的建议!