我有一个解析错误,当我上传这段代码到我的服务器(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版本中,不能对其中的表达式求值。
删除了代码片段,因为它们有点令人困惑。原题中的第二个片段是正确的。