或者使用 return 更改偏好

OR Preference changing with a return

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

$a = false;
$b = true;
$c = $a || $b;

此处 $c 为 true

$a = false;
$b = true;
$c = $a or $b;

这里$c是false


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

$a = false;
$b = true;
return $a or $b;

Returns是的,这让我很困惑。

这是什么原因?

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

$c = $a or $b;

变成这样:

($c = $a) or $b;

但这没有意义:

(return $a) or $b;

所以你得到这个:

return ($a or $b);

在表达式中,运算符优先级适用。 =||or都是运算符,$c = $a or $b是表达式。根据运算符优先级,它的计算结果为 ($c = $a) or $b.

然而,return 是一个 语句 return 不是运算符,也不按运算符优先级分组。它始终计算为 return <expression>,因此始终计算为 return ($a or $b).

表达式 $c = $a or $b 的结果是 true 顺便说一句。 $c 是在表达式的过程中被赋值 false,但表达式整体 returns 的值是 true ($b)。所以即使这样 return true:

return $c = $a or $b;