php运算符优先级的这几道题你会么?

php运算符优先级的这几道题你会么?

先来道简单的:

$a = 3;
if ($a = 5) {
$a++;
}
var_dump($a);// (int)6

这里掉坑的同学会认为是3. 注意=号是赋值 == 比较运算符

所以一个好的编码习惯 对于数字来说 最好把它放前面写成 5 == $a 这样即使你写成了 5 = $a 此时会报错 不会是隐式的赋值

来,我们接着看下一个坑.

$x = 2;
echo $x == 2 ? "我" : $x == 1 ? "你" : "它"; //你

掉坑里的同学可能认为结果是我, 因为$x确实等于2 根据三元运算符的规则 ?前为true就输出我了.

这里的知识点在于运算符优先级以及三元运算符左结合的特性,其实真正的执行流程是这样的:

$x = 2;//将2赋值给变量x 没啥说的
echo $x == 2 ? "我" : $x == 1 ? "你" : "它"; //你
//因为 == 的优先级比三元运算符高 所以转换成如下代码
#echo true ? "我" : false ? "你" : "它";
//由于三元运算符左结合的特性 所以如上代码等效于
#echo (true ? "我" : false) ? "你" : "它";
//先计算左边括号里的
#echo "我" ? "你" : "它"; //到这里大家应该明白了吧
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » php运算符优先级的这几道题你会么?