$a = 1;
$b = 2;$c = 3;$a && $b = $c;echo "a:$a";echo "b:$b";echo "c:$c";这样是a:1b:3c:3$a = 0;$b = 2;$c = 3;$a && $b = $c;echo "a:$a";echo "b:$b";echo "c:$c";这样是a:0b:2c:3 解析:
1: && 和赋值运算符“=”的优先级是&&优先级高,但是加红的写法中并不是 $a和$b先做与运算然后 =$c,这么理解相当于 1=$c, 而 1=$c这样的写法是错误的
2: 这种另类的写法正确的理解方式为:
if($a){$b = $c},即如果$a为真,则执行赋值语句$b = $c;否则不执行此赋值语句,这样结果不难理解