致命错误:调用未定义的函数empty()

4

不知道为什么会出现这个奇怪的错误?“致命错误:调用未定义函数 empty()”

function newpart($name,$country,$bday_day,$bday_month,$bday_year,$gender,$pass1,$pass2,$email,$option1,$secondOption1,$secondOptionLevel1){ 


        $this->name = $name;
        $this->country = $country;
        $this->bday_day = $bday_day;
        $this->bday_month = $bday_month;
        $this->bday_year = $bday_year;
        $this->gender = $gender;
        $this->pass1 = $pass1;
        $this->pass2 = $pass2;
        $this->email = $email;
        $this->option1 = $option1;
        $this->secondOption1 = $secondOption1;
        $this->secondOptionLevel1 = $secondOptionLevel1;


        if( empty($this->name) || empty($this->pass1) ){
            $this->errorCount++;
        }



    }

你正在运行哪个版本的PHP?此外,这看起来像是一个类中的方法?如果你使用 $name 而不是 $this->name,它是否有效? - Revent
2
当我尝试将空值作为变量函数使用时,例如在$foo ='empty'; $isEmpty = $foo('something');中,我发现了该错误的一些参考资料。您确定这个错误是由您粘贴的代码引起的吗?它可能存在于其他地方。 - bfavaretto
2
在变量函数方面我也遇到了同样的问题。根据文档: “变量函数不能与语言结构一起使用,例如echo、print、unset()、isset()、empty()、include、require等。使用包装函数来利用这些结构作为变量函数。” - Jekis
3个回答

9

我遇到了相同的致命错误...

在单词“empty”之前,我在编辑器中按下了alt + space而不是space。这导致出现了一个虚假的空格。


1
这就是我喜欢在键盘上拥有的功能。你知道,每次都让你猜测。非常感谢那个曾经想出这个主意的人。 - johnkork

0
我能想到的唯一可能是你正在使用早于php 3的版本。虽然我无法想象你正在运行php3服务器。Empty()函数出现在php 3中。

1
它是在PHP3中出现的。另外,请使用注释来提问。 - mario
这个页面说它适用于php 4、5:http://php.net/manual/en/function.empty.php。我本来想发表评论而不是回答,但它实际上可能就是答案,所以我没有投票删除它。 - ajon
当前的手册没有记录版本历史。参考:http://www.php.net/manual/php3.php#changed_behaviour 不,那不是答案。 - mario
谢谢你的指点,我不知道php3没有包含在同一页中。我已经更正了我的答案,但你怎么知道这不是Jake的问题所在呢? - ajon
在 PHP3 之前,对象也不存在。 - mario

-3

如果变量没有被设置,您可能会收到此错误。无论何时使用empty(),也要使用isset()。我猜这会为您解决它。


7
不,empty 不需要设置变量。 - bfavaretto
有时候我会遇到这样的问题:“变量未定义,无法运行函数或其他操作”。就像Jake遇到的那个问题一样,使用isset()函数解决了。也许我的代码本身就有错误 :p。所以我希望在他的情况下也能奏效 :) 谢谢你的回答@bfavaretto - Jelmer
-1 Empty不是一个函数,它是一种语言结构。当您在没有isset的情况下使用empty时,您会收到一个注意,指出变量/属性/数组索引未设置 - 没有关于“函数无法工作”的内容。对于未设置的变量,empty可以正常工作(因为它们等同于NULL)。 - Mihai Stancu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接