我无法弄清楚为什么这不起作用:
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-object
。
show()
方法确实存在,它基本上打印出一个人的姓名和位置。
在构造函数中,不是将$ member添加到$ arData,而是使用$ member-&gt; show()它可以工作。
那么......怎么了?
答案 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()
。