-2

我在 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" 
    } 
}
4

1 回答 1

5

如果要更改 foreach 中的数组元素,则需要使用引用,因为 foreach 中的值只是临时值,不会影响原始值。

例子:

foreach($food as &$fruit) {
    $fruit["banana"] = "yummy";
    dd($fruit); /* returns "banana" => "yummy" */
}
于 2013-07-14T19:56:04.150 回答