关于在if判断中赋值的问题

<?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 这种你的意思是想赋值还是比较?