首页 > 解决方案 > 为什么用 (array) 转换数组会导致数组项不更新?

问题描述

为什么强制转换$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]。

标签: phparrays

解决方案


您没有修改原始数组,而是修改当前循环迭代。如果要修改原始数组,则需要访问键:

foreach ((array) $arr as $k => $v) {
    $arr[$k] = $v * 2;
}

可以通过@user2864740和他们提供的示例确认的“通过引用”来更新原始文件。

第三,正如@user2864740在原始评论链中指出的那样, using(array)似乎会导致它创建一个新数组。

现场示例

重复


推荐阅读