PHP中if语句的$a赋值表达式为何不能直接跟在条件判断括号内?
- 内容介绍
- 文章标签
- 相关推荐
本文共计323个文字,预计阅读时间需要2分钟。
PHP执行`if($a=100 + $b=200) { var_dump($a, $b); }`后,$a变为true,而$b保持为200的原因是:
1. 在PHP中,`$a=100 + $b=200;`中的赋值操作符`=`具有从左到右的结合性。这意味着首先计算`$a=100 + $b`,然后使用结果进行`$b=200`的赋值。
2. `100 + $b`的结果是一个数值,然后尝试将这个数值赋给$b,这会导致类型错误(因为$b应该是布尔值)。
3. 因此,`$a`被赋值为布尔值`true`,因为任何非零数值在PHP中都被视为`true`。
4. `$b`保持为200,因为没有改变它的值。
代码执行结果如下:
phpif($a=100 + $b=200) { var_dump($a, $b);}
输出:bool(true)int(200)
为什么php执行if($a=100 && $b=200){var_dump($a,$b)}后$a=true,而$b=200?.md> 为什么php执行if($a=100 && $b=200){var_dump($a,$b)}后$a=true,而$b=200? ``` if ( $a = 100 && $b = 200 ) { var_dump( $a, $b ); } ``` 执行上面的代码,您或许会惊讶的问为什么$a=true,而$B=200?其实原因运行是这样: ``` $a = (100 && $b=200); //所以$a=true,正因为$a=true,导致$b可以执行赋值 if( $a ){ $b = 200; } ``` 其实这样的写法个人觉得是不合理的。
本文共计323个文字,预计阅读时间需要2分钟。
PHP执行`if($a=100 + $b=200) { var_dump($a, $b); }`后,$a变为true,而$b保持为200的原因是:
1. 在PHP中,`$a=100 + $b=200;`中的赋值操作符`=`具有从左到右的结合性。这意味着首先计算`$a=100 + $b`,然后使用结果进行`$b=200`的赋值。
2. `100 + $b`的结果是一个数值,然后尝试将这个数值赋给$b,这会导致类型错误(因为$b应该是布尔值)。
3. 因此,`$a`被赋值为布尔值`true`,因为任何非零数值在PHP中都被视为`true`。
4. `$b`保持为200,因为没有改变它的值。
代码执行结果如下:
phpif($a=100 + $b=200) { var_dump($a, $b);}
输出:bool(true)int(200)
为什么php执行if($a=100 && $b=200){var_dump($a,$b)}后$a=true,而$b=200?.md> 为什么php执行if($a=100 && $b=200){var_dump($a,$b)}后$a=true,而$b=200? ``` if ( $a = 100 && $b = 200 ) { var_dump( $a, $b ); } ``` 执行上面的代码,您或许会惊讶的问为什么$a=true,而$B=200?其实原因运行是这样: ``` $a = (100 && $b=200); //所以$a=true,正因为$a=true,导致$b可以执行赋值 if( $a ){ $b = 200; } ``` 其实这样的写法个人觉得是不合理的。

