【发布时间】:2011-04-13 22:23:37
【问题描述】:
我是 PHP 新手,花了一些时间寻找一个类似的问题,但似乎没有人能完全回答我。
我有一个对象数组(我创建的一个名为 StatusMessage 的类),我想访问数组中每个对象的成员函数。我可以使用 foreach 循环来做到这一点,但我只需要访问前 10 个对象(它们已排序),所以我尝试使用 for 循环。当我进行成员函数调用时,我收到一个关于无法在非对象上调用成员函数的致命错误。 $statObjs 中的 StatusMessage 对象是否需要强制转换?
有什么建议吗?
function collectStatuses($statusesAPI){
$statusObjects = Array();
foreach($statusesAPI as $status)
{
//StatusMessage is a class I created
array_push($statusObjects, new StatusMessage($status));
}
return $statusObjects;
}
//$statutuses[data] was populated further up
$statObjs = collectStatuses($statuses[data]);
//This loop works, but prints all StatusMessage objects in $statObjs
foreach ($statObjs as $value) {
//getInteractions() and getMessages() are both member functions of the StatusMessage class I created.
echo '[' . $value->getInteractions() . '] ' . $value->getMessage();
}
//This loop doesn't work. Throws the error mentioned above
for ($i = 0; $i < 10; $i++) {
echo '[' . $statObjs[$i]->getInteractions() . '] ' . $statObjs[$i]->getMessage();
}
【问题讨论】:
-
感谢您指出缺少的 $s。我试图清理这篇文章的代码并完成了它。但是,在实际代码中,没有缺少美元符号。在尝试调用成员函数时,我收到的唯一错误是在 for 循环内。
-
那么这可能是@Chris 所说的,并且数组中的对象少于 10 个。之前执行
print_r($statObjs)或echo count($statObjs)并检查。 -
我遇到了这个确切的问题。你有想过吗?每个人的答案似乎都表明您的对象数组中可能没有 10 个项目,但我认为不是这样。我有一个数组,其中只有一个对象,我无法使用 $arr[0] 或 current($arr) 访问它的成员函数——只有当我使用 foreach 时。
标签: php