我在服务器上传这段代码时遇到了解析错误(php 5.5.12):
if (!empty($a = $b)) {...}
错误是:
语法错误,意外'=',期待')'
我对MAMP(php 5.5.10)上的相同代码没有任何问题。 当然,我可以使用以下代码轻松解决它:
$a = $b;
if (!empty($a)) {...}
但是,第一个应该有效。
谢谢!
编辑: 我工作。我刚刚遇到PHP版本的问题。
答案 0 :(得分:5)
来自empty()
文档:
注意:在PHP 5.5之前,
empty()
仅支持变量;还要别的吗 将导致解析错误。换句话说,以下不会 工作:empty(trim($name))
。相反,请使用trim($name) == false
。
答案 1 :(得分:1)
你不能把变量赋值放在empty
里......作为黑暗中的一个镜头,我想你的意思是在$a
和$b
之间进行比较......在这种情况下,请尝试使用==
或===
来比较类型。
编辑,您必须将比较分配给变量:
$expr = $a == $b;
if (!empty($expr)) {...}
但是,我不确定你为什么需要在这里使用空...可以做到
if (FALSE !== ($a == $b)) {...}
答案 2 :(得分:0)
PHP函数empty()
只是检查一个变量是否都设置(isset()
并且不是NULL(!is_null())。在早于5.5的PHP版本中,你无法评估在里面表达。
编辑:
删除了代码段,因为它们有点令人困惑。原始问题中的第二个片段是正确的。上面的内容应该解释原因。
答案 3 :(得分:0)
工作正常,您可以查看下一个url
http://sandbox.onlinephpfunctions.com/code/7ee2afa5c3dddc283b69ee9d510695acf7deb451
也许你的服务器有一些糟糕的设置。确保您拥有完整版本5.5.12
答案 4 :(得分:0)
嗯,在将PHP更新到5.5.x后,我没有重新启动我的服务器。我的坏。
但它有效!
谢谢!