PHP 在 if 条件判断中使用赋值表达式的注意事项

示例代码

先上一段示例代码,你能快速的得出运算结果吗?

<?php
$a = 1;
$b = 2;

if ($a = 2 && $b = 5)  {
    $a++;
    $b++;
}

echo 'a=' . $a . ' and ' . 'b='. $b;

让我们看下这段代码的执行逻辑:

1、在这里 if 条件判断中使用了逻辑或运算符,符号两边的表达式会依顺序被转换为布尔类型进行判断
2、变量 $a 被成功赋值 2,在判断时转换为布尔值 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 条件判断中直接使用赋值运算,多写一行变量赋值的代码,代码清晰也不容易出错。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容