You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP如何为多维嵌套数组添加新键 批量新增指定字段实现方法

问题原因

你的代码出现问题核心有3点:

  1. PHP的foreach默认是值传递,你修改的$data、$field都是原数组的临时副本,修改不会同步到原$datas数组
  2. 嵌套了多余的循环层,不需要遍历$data的所有键、也不需要遍历$field的所有键
  3. 存在逻辑错误:$data['data'] = $field直接把整个data子数组覆盖为单条记录,破坏了原有结构,也没有按规则匹配tipe的取值

正确实现方案

方式1:引用遍历(写法更简洁)

foreach ($datas as &$item) {
    // 第一层数组添加jenis键
    $item['jenis'] = 'Data Warung';
    
    // 遍历data下属的字段数组,添加tipe键
    foreach ($item['data'] as &$field) {
        $field['tipe'] = $field['field'] == 'Warung' ? 'text' : 'uang';
    }
    // 销毁引用,避免后续操作出现意外覆盖
    unset($field);
}
unset($item);

// 验证结果
print_r($datas);

方式2:索引遍历(无需处理引用销毁问题)

foreach ($datas as $itemKey => $item) {
    // 给第一层元素加jenis键
    $datas[$itemKey]['jenis'] = 'Data Warung';
    
    // 处理data下属字段的tipe键
    foreach ($item['data'] as $fieldKey => $field) {
        $datas[$itemKey]['data'][$fieldKey]['tipe'] = $field['field'] == 'Warung' ? 'text' : 'uang';
    }
}

两种写法运行后都可以得到你需要的数组结构。


内容的提问来源于stack exchange,提问作者Eko Rudiyanto jay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 16:27:00