<?php
$b = 'b';
if ($a = $b) {
var_dump($a);
}
if (1 == 1 && $a = $b) {
var_dump($a);
}
if ($a = $b && 1 == 1) {
var_dump($a);
}
打印出来的结果是:
string(1) "b"
string(1) "b"
bool(true)
想问下最后为什么会输出true
if ($a = $b && 1 == 1) { 这句代码的意思是将 $b && 1 == 1 赋值给了$a 所以$a为true
你看是不是&&短路的问题
好像这里涉及到 逻辑运算的优先级吧
最后一个条件里少了一个=
条件语句等于要用“==”
逻辑判断是“==”,同时运算优先级拿不准的都加小括号,确保是自己想要的逻辑
赋值运算符的优先级是最低的。
后面的表达式的值为true
所以输出就为真了。
在第二个if表达式中,a并没有重新赋值。
赋值运算符<逻辑与运算符<关系运算符<算术运算符
$a = $b 这种你的意思是想赋值还是比较?