<分区>
所以我有一个以下类型的 PHP 语句:
if ($x=function($y) || $z == 50) {
我看到发生的情况是,如果 $z 是 50,则 $x 不会被设置,因为该函数从未被调用过。 这真的可能吗?我可以(并且确实)轻松解决了这个问题,但我想我对正在发生的事情感到困惑,并且想确保我以后不会犯这样的错误 我试图找出如何评估这样的 OR 表达式。有没有我可以查看 php 是如何“编译”的地方?
<分区>
所以我有一个以下类型的 PHP 语句:
if ($x=function($y) || $z == 50) {
我看到发生的情况是,如果 $z 是 50,则 $x 不会被设置,因为该函数从未被调用过。 这真的可能吗?我可以(并且确实)轻松解决了这个问题,但我想我对正在发生的事情感到困惑,并且想确保我以后不会犯这样的错误 我试图找出如何评估这样的 OR 表达式。有没有我可以查看 php 是如何“编译”的地方?
最佳答案
您有运算符优先级问题。检查这个http://www.php.net/manual/en/language.operators.precedence.php
因为 ||
的优先级高于 =
你的表达式真的是这样的
if (
$x = (
function($y) || ( $z == 50 )
)
)
而不是(我认为你的意图)
if (
($x = function($y)) || ($z == 50)
)
关于PHP 似乎正在向后评估 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23761970/