在if语句中声明变量时出错


Error when declaring variable in if statement

我有一个解析错误,当我上传这段代码到我的服务器(php 5.5.12):

if (!empty($a = $b)) {...}

错误是:

语法错误,意外'=',期望')'

在MAMP (php 5.5.10)上使用相同的代码没有任何问题。当然,我可以用下面的代码轻松解决这个问题:
$a = $b;    
if (!empty($a)) {...}

但是,第一个应该可以。

谢谢!

编辑:我的作品。我的PHP版本出了点问题

From empty() docs:

注意:在PHP 5.5之前,empty()只支持变量;其他东西将导致解析错误。换句话说,下面的内容不会工作:empty(trim($name))。请使用trim($name) == false

你不能把变量赋值在empty…我猜你的意思是比较$a$b…在这种情况下,请尝试使用=====来比较类型。

EDIT在PHP5.5之前,你必须将比较值赋给一个变量:

$expr = $a == $b;
if (!empty($expr)) {...}

然而,我真的不知道为什么你需要在这里使用空…可以直接写

if (FALSE !== ($a == $b)) {...}

工作正常,你可以检查下一个url

http://sandbox.onlinephpfunctions.com/code/7ee2afa5c3dddc283b69ee9d510695acf7deb451

可能你的服务器设置不好。确保您有完整版本5.5.12

更新php到5.5.x后,我没有重启服务器。我的坏。

但它有效!

谢谢!

PHP函数empty()只是检查一个变量是否既设置了(isset())又不是NULL (!is_null())。在5.5以前的PHP版本中,不能对其中的表达式求值。

编辑:

删除了代码片段,因为它们有点令人困惑。原题中的第二个片段是正确的。