2013-07-14 59 views
-2

我在PHP中看到一個我不理解的行爲。這裏是:關於陣列推送的誤解 - PHP

foreach($food as $fruit) { 
    $fruit["banana"] = "yummy"; 
    dd($fruit); /* returns "banana" => "yummy" */ 
} 

dd($fruit); /* returns "banana" => "yummy" */ 
dd($food[0]); /* doesn't return "banana" => "yummy" as I expect it to */ 

爲了簡單起見,我將所有的轉儲文件取消註釋,但當然我只是一個接一個地運行它們。

爲什麼我的推送不影響整個陣列?

數組看起來像這樣

array(2) { 
    [0]=> array(2) { 
     ["id"]=> string(1) "1" 
     ["name"]=> string(7) "Something" 
    } 
    [1]=> array(2) { 
     ["id"]=> string(1) "2" 
     ["name"]=> string(5) "Somewhere" 
    } 
} 
+2

又是什麼'$ food'包含與開始? – JJJ

+0

解釋downvote?我不明白。據我所知,我並沒有要求某人爲我編碼,我也沒有提出一個很容易搜索或在本網站上找到的問題?不像它是我可以在文檔或任何其他地方訪問的函數,不是嗎? – veksen

+0

@ user1732521請編輯您的問題,而不是在評論中寫下代碼。 –

回答

5

如果你想改變裏面,你需要使用引用的foreach數組元素,因爲裏面的foreach的值是不會影響原來只是臨時值一。

例如:

foreach($food as &$fruit) { 
    $fruit["banana"] = "yummy"; 
    dd($fruit); /* returns "banana" => "yummy" */ 
} 
+0

+1,只需放入'&'像'foreach($ food as&$ fruit){' –

+0

非常感謝!我一直認爲他們正在受到影響 – veksen