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

时间:2014-06-06 12:52:13

标签: php

我在服务器上传这段代码时遇到了解析错误(php 5.5.12):

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

错误是:

  

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

我对MAMP(php 5.5.10)上的相同代码没有任何问题。 当然,我可以使用以下代码轻松解决它:

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

但是,第一个应该有效。

谢谢!

编辑: 我工作。我刚刚遇到PHP版本的问题。

5 个答案:

答案 0 :(得分:5)

来自empty()文档:

  

注意:在PHP 5.5之前,empty()仅支持变量;还要别的吗   将导致解析错误。换句话说,以下不会   工作:empty(trim($name))。相反,请使用trim($name) == false

答案 1 :(得分:1)

你不能把变量赋值放在empty里......作为黑暗中的一个镜头,我想你的意思是在$a$b之间进行比较......在这种情况下,请尝试使用=====来比较类型。

在PHP5.5之前

编辑,您必须将比较分配给变量:

$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后,我没有重新启动我的服务器。我的坏。

但它有效!

谢谢!