关于php运算符优先级的问题

$x = true;
$y = false;
$z = $y=1 || ($x = 2);
var_dump($x);
var_dump($y);
var_dump($z);

本人小白,刚刚学习,上面是php的代码,想请问上面的输出结果是什么?为什么是这样?

($x = 2) 结果是2,因为是单个等于
$y=1结果是1

$z = $y=1 || ($x = 2);
结果是 1 || 2,所以结果是true

var_dump($x);
var_dump($y);
此时x=1 y=2
var_dump($z);
z = true

输出结果是 bool(true) bool(true) bool(true)

 $z = $y=1 || ($x = 2);可以这样分解:
 1. $y=1 || ($x = 2);

它一看左边是个1,就会执行

$ y=true
而不会执行 $x = 2 ,

然后执行:

 2.  $z = $y

 $z = true;

所以最后输出结果就是 bool(true) bool(true) bool(true)

如果你把上面的||改成&&, 或者把1或2改成其它数据,

最后输出结果是什么,你按照我上面的分析,应该很快就能得出结论了。


其实php手册就有一个完整运算符表,可以参考,,,关键是 || 运算符 一旦左边成立为true 就不会执行右边 同理 && 也是