php foreach数组并分配此数组

时间:2011-12-18 15:46:35

标签: php arrays foreach associative-array

我想在预处理时为数组添加一个值:

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);

第一个原理还可以,但是当我离开循环时,对象添加了消失,打印出数组。

我想这是一种正常的行为,解决这个“功能”的最佳方法是什么?

2 个答案:

答案 0 :(得分:11)

只需按照以下方式致电$cell

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

它应该保留价值。 Passing by reference

答案 1 :(得分: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);