PHP 三目运算符问题
本文介绍了PHP 三目运算符问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
$a = 1;
echo $a == 1 ? 2 : $a == 1 ? 3 : 4 ;
这段代码的输出为什么是 3 呢? 同样的三目运算符级联,用 JavaScript 写结果就是 2...
解决方案
哎,这个是PHP的三目运算符比较特殊:
PHP的
?:
是从左到右结合的:$a == 1 ? 2 : $a == 1 ? 3 : 4
等价于($a == 1 ? 2 : $a == 1) ? 3 : 4
JavaScript的
?:
是从右到左结合的:$a == 1 ? 2 : $a == 1 ? 3 : 4
等价于$a == 1 ? 2 : ($a == 1 ? 3 : 4)
所以呢,多加点括号吧。反正多加括号一般不会有什么影响。
参考:
看看常见语言的?:
三目运算符的结合顺序:(就PHP奇葩)
C: 从右到左
C++: 从右到左
Java: 从右到左
PHP: 从左到右
JavaScript: 从右到左
C#: 从右到左
Object-C: 从右到左
Swift: 从右到左
这篇关于PHP 三目运算符问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文