在以下代码中:
$a = 0 or 1;
$b = 0 || 1;
echo "$a, $b"; // 0, 1
为什么$a
等于零,我认为or
和||
在PHP中是可互换的?or
语句究竟发生了什么,使其返回0
?
我假设两个结果都是1
,使其与1, 1
相呼应。
or
的优先级低于=
的优先级,后者低于""
所以你的代码相当于:
($a = 0) or 1;
$b = (0 || 1);
请参阅PHP手册中的优先级表。
这是因为PHP中的优先级规则。分配=
运算符的优先级低于逻辑||
运算符,但优先级高于逻辑OR
运算符。请参见此处:http://php.net/manual/en/language.operators.precedence.php
这是因为的优先顺序
// The result of the expression (false || true) is assigned to $e
// Acts like: ($e = (false || true))
$e = false || true;
// The constant false is assigned to $f and then true is ignored
// Acts like: (($f = false) or true)
$f = false or true;
http://php.net/manual/en/language.operators.logical.php