PHP的foreach中无法替换数组的值

foreach ($rows as $key => $value) {
            $value['content'] = str_replace('sag','ds'),
                $value['content']);
        }

运行之后,发现rows数组中的相关值没有发生变化一直在尝试是否自己写错了,最后发现确实是无法改变。

改正之后:

foreach ($rows as $key => &$value) {
            $value['content'] = str_replace('sag','ds'),
                $value['content']);
        }

原来需要使用引用操作。

foreach只是将数组中的每份元素的值拷贝到each后面的变量,也就是对值本身的拷贝,对其值进行改变并不会影响到数组本身。
但是如果是对象数组的情形,也就是数组元素均为对象时,此时each后面的变量是对对象引用的拷贝,对其进行的改变会直接影响到原数组本身。这点与上面情形很容易弄混。

你可能感兴趣的:(PHP)