或 偏好随回报而改变

Hec*_*nez 3 php operator-precedence comparison-operators

从我所看到的,运算符优先级在这两个示例中是有意义的:

$a = false;
$b = true;
$c = $a || $b;
Run Code Online (Sandbox Code Playgroud)

这里 $c 是真的

$a = false;
$b = true;
$c = $a or $b;
Run Code Online (Sandbox Code Playgroud)

这里 $c 是假的


我明白这背后的原因。但是以下内容:

$a = false;
$b = true;
return $a or $b;
Run Code Online (Sandbox Code Playgroud)

返回 true,这让我很困惑。

这是什么原因?

Ale*_*sky 5

or的优先级低于=,因此:

$c = $a or $b;
Run Code Online (Sandbox Code Playgroud)

变成这样:

($c = $a) or $b;
Run Code Online (Sandbox Code Playgroud)

但这没有意义:

(return $a) or $b;
Run Code Online (Sandbox Code Playgroud)

所以你得到这个:

return ($a or $b);
Run Code Online (Sandbox Code Playgroud)