为什么使用$arr
转换(array)
会导致数组项不被修改?
$arr = array(1, 2, 3, 4);
foreach ((array)$arr as &$value) {
$value = $value * 2;
}
$arr
现在应该等于[2,4,6,8]但是由于某种原因它仍然等于[1,2,3,4]。
答案 0 :(得分:2)
您不是在修改原始数组,而是修改当前的循环迭代。如果要修改原始数组,则需要访问键:
foreach ((array) $arr as $k => $v) {
$arr[$k] = $v * 2;
}
'passing by reference'确认@user2864740以及they已提供的示例,可以更新原始文件。
第三,正如@user2864740在原始评论链中指出的那样,使用(array)
似乎会导致它创建一个新数组。
直播示例