我是PHP新手,花了一些時間尋找類似的問題,但似乎沒有人爲我回答。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循環中。 – brsivart 2011-04-13 22:43:11
然後它可能是@Chris所說的,並且你的數組中只有不到10個對象。執行'print_r($ statObjs)'或'echo count($ statObjs)'並檢查它。 – 2011-04-13 22:47:41
我有這個確切的問題。你有沒有發現它?每個人的回答似乎都表明你的對象數組中可能沒有10個項目,但我不認爲就是這樣。我有一個只有一個對象的數組,我不能使用$ arr [0]或current($ arr)訪問它的成員函數 - 只有當我使用foreach時。 – jessica 2011-07-02 23:31:33