2015-01-15 85 views
-2

我正在嘗試迭代stdClass對象內數組中保存的img數據。我已經能夠獲得stdClass來完成我希望的所有其他功能,試圖讓圖像順序排列/迭代已經避開了我。我已經看過php.net並通過堆棧閱讀一個答案,我可以理解這解釋了我除了谷歌答案失敗之外的錯誤。我現在很困惑,並嘗試了很多很多事情都沒有成功。stdClass不能使用[]致命錯誤

$myObj = new stdClass; 
$myObj->image=['x01.jpg', 'x02.jpg', 'x03.jpg', 'x04.jpg', 'x05.jpg']; 
$myObj->name="asdfg"; 
$myObj->phone="exaasdfaspg"; 
$myObj->email="exsdfg"; 

$myObjArray[] = $myObj; 

foreach($myObjArray as $myObj) 
{ echo '<img src="_imgResevior/' . $myObj->image[] . '"/>' ;} 
#{ echo (in_array('<img src="_imgResevior/' . $myObj->image['image'] . '"/>')) ;} 
+1

'$ myObj->圖像[]'是無效的,除非你是追加到數組,即'$ myObj->圖像[] ='newfile.jpg';'。使用'$ myObj-> image [0]'或任何你想要訪問的元素。或者在你的第一個'foreach'中用foreach($ myObj-> image作爲$ image){...}。請注意,如果您希望使用最初在'foreach'之後聲明的'$ myObj',那麼您重新使用變量名稱('$ myObj')也會導致不可預知的結果。 – sjagr 2015-01-15 16:24:42

+1

嘗試'foreach($ myObj->圖像爲$ myObjArray)' – robert 2015-01-15 16:26:01

+0

問題不明確,請指定什麼是不清楚的迭代數組? – 2015-01-15 16:31:55

回答

0

無法訪問對象作爲數組。如果你想要這個,你需要實現ArrayAccess Interface

讓你的代碼的工作只是改變foreach這樣:

foreach($myObj->image as $img) 
{ 
    echo '<img src="_imgResevior/' . $img . '"/>'; 
} 
+1

謝謝,這工作。同樣感謝您也指點我在學校午餐期間閱讀的ArrayAccess界面;第二個答案也適用。感謝您的幫助,非常感謝。 – Chezshire 2015-01-15 16:35:32

1
foreach($myObjArray as $myObj) 
{ echo '<img src="_imgResevior/' . $myObj->image[] . '"/>' ;} 

應該是

foreach($myObj->image as $myObjArray) 
{ echo '<img src="_imgResevior/' . $myObjArray . '"/>' ;} 

輸出HTML代碼

<img src="_imgResevior/x01.jpg"> 
<img src="_imgResevior/x02.jpg"> 
<img src="_imgResevior/x03.jpg"> 
<img src="_imgResevior/x04.jpg"> 
<img src="_imgResevior/x05.jpg"> 
+0

誰投票的答案你有沒有在投票前測試它? – robert 2015-01-15 16:31:38

+1

謝謝,這也有效,所以我投了票。 – Chezshire 2015-01-15 16:34:30

+0

我先寫了答案,然後你接受了他的答案,但是沒關係 – robert 2015-01-15 16:39:17