我有一个示例代码。真奇怪!即使没有在已定义的数组中进行任何更改,但仍然更改了我定义的数组的值。
$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 )
你能解释一下,怎么样?
您确实更改了原始数组,因为您在数组循环中使用&
。
这个信号为references作为@axiac评论。
为了避免对原始数组进行更改,请使用以下for循环:
foreach ($myarr as $myvalue)
你正在传递myarr的地址,其中myvalue使用相同的myarr地址,为什么它会改变
用这个
$myarr = array(1, 2, 3, 4);
foreach ($myarr as $myvalue) {
$myvalue = $myvalue * 2;
}
print_r($myarr);
你在$ myvalue之前没有“&”尝试过吗?