首页 > 解决方案 > 使用foreach循环更改数组的值而不修改

问题描述

我有一个示例代码。真奇怪!即使没有对定义的数组进行任何更改,但我定义的数组的值仍然发生了变化。

$myarr = array(1, 2, 3, 4);
foreach ($myarr as &$myvalue) {
    $myvalue = $myvalue * 2;
}
print_r($myarr); // Output - Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 )

你能解释一下,它是怎么发生的?

标签: phparraysreference

解决方案


您确实更改了原始数组,因为您&在数组循环中使用。

此信号作为@axiac 注释的引用。

为了避免更改原始数组,请使用以下 for 循环:

foreach ($myarr as $myvalue)

推荐阅读