示例代码
先上一段示例代码,你能快速的得出运算结果吗?
<?php
$a = 1;
$b = 2;
if ($a = 2 && $b = 5) {
$a++;
$b++;
}
echo 'a=' . $a . ' and ' . 'b='. $b;
让我们看下这段代码的执行逻辑:
1、在这里 if 条件判断中使用了逻辑或运算符,符号两边的表达式会依顺序被转换为布尔类型进行判断
2、变量 $a 被成功赋值 3,在判断时转换为布尔值 true,$a++ 递增运算对于布尔值相当于 (int)boolean,变量会被重新赋值 1
3、变量 $b 因为前一个表达式已满足条件,而没有进行布尔值转换,所以 $b 的赋值保持不变
通过上边的执行逻辑后,运行结果就是 a=1 and b=6
再来看另一段代码
<?php
$a = 1;
if ($a = 2) {
$a++;
}
echo 'a=' . $a;
让我们看下这段代码的执行逻辑:
1、$a 被成功赋值 2
2、if 条件判断 $a 的值是否符合布尔值 true,注意这里并没有进行布尔值强制转换
当转换为 boolean 时,以下值被认为是 false:
通过上边的执行逻辑后,运行结果就是 a=3
结论
实际开发中,尽量不要在 if 条件判断中直接使用赋值运算,多写一行变量赋值的代码,代码清晰也不容易出错。
网友评论