php - 尝试更新数组时出现错误
问题描述
我对 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。
谢谢你们:)
解决方案
PHP foreach 在迭代时复制每个项目,因此当您更改 $res 项目时,$result 数组不会更新。
1)您可以使用数组键来更改主数组
foreach($arrr as $k => $item) {arrr[$k]['key'] = 'changed'}
2) 或者您可以获取 $res 项目的链接并直接更改它
foreach($arrr as &$item) {$item['key'] = 'changed'}
请注意,第二种情况可能会导致不同的问题
推荐阅读
- javascript - 一些 javascript 代码让我无法在 chrome 上打开 devTools
- python - 使用 Python 套接字每秒发送 100 个 UDP 数据包,如何减少延迟?
- python - Python Folium 通过 pdfkit 和 selenium 导出地图错误
- excel - 从工作表中提取特定数据并为电子邮件创建附件
- java - 如何使用 Reactor 的 Flux 实现类似心跳的功能?
- reactjs - ReferenceError: afterAll 没有定义
- memory - CUDA cudaMemcpy 问题
- javascript - 如何在javascript中将反斜杠包装为带有单引号或双引号的数组项
- git - GitHub文件夹上有一个白色箭头,打不开
- algorithm - 如何用递归树求解 T(n) = T(n-1) + n^2