为什么这个短的if-else逻辑
$count = 0;
echo $count === 0
? 'zero'
: $count === 1
? 'one'
: 'more';
回声1?它不应该回应零?
为什么这个短的if-else逻辑
$count = 0;
echo $count === 0
? 'zero'
: $count === 1
? 'one'
: 'more';
回声1?它不应该回应零?
利用括号!
echo ($count === 0 ? 'zero' :($count === 1 ? 'one': 'more'));
之所以你的版本相呼应“一”是因为PHP认为第一?
是语句的一部分,因此如果$count
等于零做最后可能的事(最后?
),这是'one'
阅读了关于this
我看了这个问题。我给出了答案,为什么它回响一个。和我给了一个版本,回应他真正想要的版本 – Neal 2011-03-22 19:06:28
http://php.net/manual/en/language.operators.comparison.php三元运算符 – 2011-03-22 19:06:43
虽然这是价值观的一个漂亮的短名单,你可以选择使用地图:
$map = array("zero", "one", "more");
echo $map[min($count,2)]; // trick: 2 becomes max value via min()
请不要滥用三元运算符这种方式。这比简单的'if/else'结构要清晰得多,任何维护你的代码的人(包括你自己三个月后)都会恨你。 – meagar 2011-03-22 19:10:46
@meagar,谢谢你的建议! – lam3r4370 2011-03-22 19:12:08