PHP中if语句的$a赋值表达式为何不能直接跟在条件判断括号内?
- 内容介绍
- 文章标签
- 相关推荐
本文共计318个文字,预计阅读时间需要2分钟。
PHP中执行`if($a=100 + $b=200) { var_dump($a, $b); }`后,$a变为true,而$b保持为200的原因是:
在PHP中,`$a=100 + $b=200;`这行代码实际上等同于`$a=100 + ($b=200);`。这里,`$b=200;`首先执行,将200赋值给$b,然后`$a`的值是`100 + 200`的结果,即300。
在`if`语句中,条件表达式`$a=100 + $b=200`的结果被赋值给$a。由于`$b=200;`已经执行,`$a`的值是300,而在PHP中,任何非零值都被认为是`true`。因此,`if`语句的条件为`true`,执行了其中的代码块。
所以,`$a`变为`true`(因为任何非零值都是`true`),而$b保持为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; } ``` 其实这样的写法个人觉得是不合理的。
本文共计318个文字,预计阅读时间需要2分钟。
PHP中执行`if($a=100 + $b=200) { var_dump($a, $b); }`后,$a变为true,而$b保持为200的原因是:
在PHP中,`$a=100 + $b=200;`这行代码实际上等同于`$a=100 + ($b=200);`。这里,`$b=200;`首先执行,将200赋值给$b,然后`$a`的值是`100 + 200`的结果,即300。
在`if`语句中,条件表达式`$a=100 + $b=200`的结果被赋值给$a。由于`$b=200;`已经执行,`$a`的值是300,而在PHP中,任何非零值都被认为是`true`。因此,`if`语句的条件为`true`,执行了其中的代码块。
所以,`$a`变为`true`(因为任何非零值都是`true`),而$b保持为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; } ``` 其实这样的写法个人觉得是不合理的。

