php - 为什么用 (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]。
解决方案
您没有修改原始数组,而是修改当前循环迭代。如果要修改原始数组,则需要访问键:
foreach ((array) $arr as $k => $v) {
$arr[$k] = $v * 2;
}
可以通过@user2864740和他们提供的示例确认的“通过引用”来更新原始文件。
第三,正如@user2864740在原始评论链中指出的那样, using(array)
似乎会导致它创建一个新数组。
现场示例
推荐阅读
- python - 使用 Beautiful Soup 进行网页抓取,无法从 application/json 数据中获取序列化日期和其他键值对
- python - python套接字应该有多快?为什么我的运行速度很慢?
- rest - 在使用 Web 服务 xamarin 时显示选择器项目
- mysql - 升级到 Ubuntu 20.04 (rails) 后无法再连接到 RDS MySQL
- microsoft-teams - 同一公司的两个人可以访问同一个 MS 开发者帐户吗?
- php - 如何从多维数组 (php) 中获取特定项目?
- python - 将数据从 TWS API 保存到 csv 文件
- .net - NuGet - 如何在消费应用程序构建输出中包含应用程序 app.config 文件?
- c# - 如何在等待多个用户输入时制作倒数计时器
- ios - 如何让 SwiftUI View 扩大可用空间?