php为什么or运算符将0返回为true


php why does or operator return 0 as true

在以下代码中:

$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