首页 > 解决方案 > 尝试更新数组时出现错误

问题描述

我对 symfony 的项目有两个问题。

我的第一个:我正在尝试修改数组中的一些数据。我有这个代码

var_dump($results); // FIRST ONE
foreach ($results as $result) {
    foreach ($result as $res) {
        foreach ($dates as $date) {
            if(!array_key_exists($date,$res)) {
                $res = array_merge($res,[$date => '0']);
            }
        }
        var_dump($res); // THIS ONE IS MODIFIED
    }
}
var_dump($results); // LAST ONE... SAME AS THE FIRST ONE

我不明白为什么我的数组'$results'没有更新......我错过了什么吗?

我的第二个问题:有没有办法简化这段代码?我不喜欢3 foreach。

谢谢你们:)

标签: phparrayssymfony

解决方案


PHP foreach 在迭代时复制每个项目,因此当您更改 $res 项目时,$result 数组不会更新。

1)您可以使用数组键来更改主数组

foreach($arrr as $k => $item) {arrr[$k]['key'] = 'changed'}

2) 或者您可以获取 $res 项目的链接并直接更改它

foreach($arrr as &$item) {$item['key'] = 'changed'}

请注意,第二种情况可能会导致不同的问题


推荐阅读