'未定义的变量'从函数返回数组时出错

时间:2014-07-05 02:21:49

标签: php arrays function return

本质上,我有一个带有可以写入数组的函数的消息类。我想在调用时通过函数返回该数组的实例。

这是班级:

class Message
{
    public $formMessages = array();

    public function __construct()
    {
    }

    public function writeFormMessage($field, $message)
    {
        $formMessages[$field] = $message;
    }

    public function getFormMessages()
    {
        return $this->formMessages;
    }
}

以下是我试图从另一个文件中获取formMessages数组的方法。是的,我已经在所述文件中有一个Message类的实例。

$test = $message->getFormMessages();

它失败了这个谓词,虽然它似乎无论如何都看不到数组:

if (!empty($test))
{ 
}

php错误是' Undefined变量:第45行的C:\ xampp \ htdocs \ test \ classes \ message.class.php中的formMessages'

修改:谢谢大家!

2 个答案:

答案 0 :(得分:3)

writeFormMessage方法中查看此行:

$formMessages[$field] = $message;

尝试访问本地变量。 (该方法中不存在。)

比较getFormMessages()中的这种用法:

return $this->formMessages;

您正确访问了预期的财产。

对两者使用相同的$this->语法。

答案 1 :(得分:1)

public function writeFormMessage($field, $message)
{
    $formMessages[$field] = $message;
}

public function getFormMessages()
{
    return $this->formMessages;
}

你在这里说的不同,这就是为什么你从结果中得到空洞的原因。 你认为你正在引用相同的var,但你不是。 $formMessages是仅存在于WriteFormMessage函数内的变量,而$this->formMessages位于其外部。

然后您必须使用$this引用它才能获得正确的结果。

    $this->formMessages[$field] = $message;