【问题标题】:php foreach over an array and assignment of this arrayphp foreach 一个数组和这个数组的赋值
【发布时间】:2012-01-23 01:57:11
【问题描述】:

我想在 foreaching 时向数组添加一个值:

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 没问题,但是当我离开循环 ant 打印数组时,添加的对象消失了。

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

【问题讨论】:

标签: php arrays foreach associative-array


【解决方案1】:

只需像这样通过引用调用$cell:

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

它应该保留价值。 Passing by reference.

【讨论】:

    【解决方案2】:

    当您遍历数组时,$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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-23
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 2014-09-10
      • 2015-04-04
      • 2012-05-28
      • 2014-04-16
      相关资源
      最近更新 更多