2011-12-18 62 views
5

我想要的值添加到一個數組的數組和分配,同時foreaching它:PHP的foreach過這陣

foreach ($array as $cell) { 
    if ($cell["type"] == "type_list") { 
     $cell["list"] = $anObject; 
     error_log(print_r($cell, TRUE), 0); 
} 
error_log(print_r($array, TRUE), 0); 

第一printr是確定的,但對象添加disapear當我離開環路螞蟻打印陣列。

我想這是一個正常的行爲,解決這個「功能」的最佳方法是什麼?

+0

可能重複的[PHP插入值到使用的foreach數組的數組(http://stackoverflow.com/questions/16491704/php-insert-value-into-array-of-arrays-using-foreach ) – kapa 2014-09-17 19:02:39

回答

11

這樣就叫$cell參考:

foreach($array as &$cell) {...} 

它應該保留的價值。 Passing by reference

+0

是的!謝謝 ! – 2011-12-18 16:06:33

4

當您遍歷數組時,$cell是值的副本,而不是引用,因此更改它不會影響數組中的值。

您應該使用&,使$cell參考:

foreach ($array as &$cell) { 
    if ($cell["type"] == "type_list") { 
     $cell["list"] = $anObject; 
     error_log(print_r($cell, TRUE), 0); 
} 
error_log(print_r($array, TRUE), 0); 

或者直接使用索引訪問數組項。

foreach ($array as $i => $cell) { 
    if ($array[$i]["type"] == "type_list") { 
     $array[$i]["list"] = $anObject; 
     error_log(print_r($array[$i], TRUE), 0); 
} 
error_log(print_r($array, TRUE), 0);