另一个类'对象的静态数组变量不允许调用第二个类的方法

时间:2011-07-06 15:57:53

标签: php

我无法弄清楚为什么这不起作用:

class Test
{
    public static $arData=array();

    public static function addMember(Person $member)
    {
        self::$arData[]=$member;
    }
    public static function showAll()
    {
        for($i=0;$i<count(self::$arData);$i++)
        {
            self::$arData[i]->show();
        }
    }
}

我得到的是:Fatal error: Call to a member function show() on a non-objectshow()方法确实存在,它基本上打印出一个人的姓名和位置。
在构造函数中,不是将$ member添加到$ arData,而是使用$ member-&gt; show()它可以工作。

那么......怎么了?

3 个答案:

答案 0 :(得分:3)

尝试

self::$arData[$i]->show();

答案 1 :(得分:2)

这个怎么样:

foreach (self::$arData as $person) {
    $person->show();
}

答案 2 :(得分:1)

错误发生在for - 循环:

...
public static function showAll()
{
    for($i=0;$i<count(self::$arData);$i++)
    {
        self::$arData[$i]->show();
    }
}
...

调用$i方法时,数组访问运算符中的i必须show()