PHP经验分享PHP 开发技术分享

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

2021-09-04  本文已影响0人  phpworkerman

示例代码

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

<?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 条件判断中直接使用赋值运算,多写一行变量赋值的代码,代码清晰也不容易出错。

上一篇 下一篇

猜你喜欢

热点阅读