我在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 */
为简单起见,我将所有的die dump取消注释,但当然我只是逐个运行它们。
为什么我的推动不会影响整个阵列?
数组看起来像这样
array(2) {
[0]=> array(2) {
["id"]=> string(1) "1"
["name"]=> string(7) "Something"
}
[1]=> array(2) {
["id"]=> string(1) "2"
["name"]=> string(5) "Somewhere"
}
}
答案 0 :(得分:5)
如果要更改foreach中的数组元素,则需要使用引用,因为foreach中的值只是临时值,不会影响原始值。
示例:
foreach($food as &$fruit) {
$fruit["banana"] = "yummy";
dd($fruit); /* returns "banana" => "yummy" */
}