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

PHP如何向指定多维数组中添加元素?

如何给PHP多维数组添加元素?

嘿,我来帮你搞定这个PHP数组的问题!你现在要给这个多维数组里的每个子数组添加一个User键(值为1)对吧?先看看你原来的代码问题出在哪,再给你几个正确的实现方法。

首先,你的原数组结构是这样的:

$data = [
    'Items' => [
        ['Item' => 211, 'Unit' => 11, 'Quantity' => 2, 'GST' => true],
        ['Item' => 210, 'Unit' => 11, 'Quantity' => 1, 'GST' => true]
    ]
];

你之前写的foreach代码有两个小问题:

  1. PHP的foreach默认是值传递,也就是说循环里的$Item只是原数组元素的副本,修改它不会影响原数组里的内容;
  2. array_push()的用法不对,它是用来给数组末尾添加单个/多个值的,不能直接传'User' => 1这种键值对(关联数组添加元素直接用键赋值更合适)。

方法一:用引用传递的foreach(最常用)

给foreach里的变量加上&符号,把值传递改成引用传递,这样修改$Item就会直接作用于原数组的元素:

foreach ($data['Items'] as &$Item) {
    $Item['User'] = 1; // 直接给子数组添加键值对
}
unset($Item); // 记得销毁引用!避免后续代码意外修改这个变量

方法二:通过索引遍历修改

如果你不习惯用引用,也可以直接通过数组索引来操作原数组:

$itemCount = count($data['Items']);
for ($i = 0; $i < $itemCount; $i++) {
    $data['Items'][$i]['User'] = 1;
}

方法三:用array_map()函数(函数式风格)

如果喜欢更简洁的函数式写法,可以用array_map()生成新数组:

$data['Items'] = array_map(function($item) {
    $item['User'] = 1;
    return $item;
}, $data['Items']);

这几种方法都能达到你想要的效果,其中第一种引用传递的foreach是日常开发中最常用的方式,记得用完后销毁引用就好啦!

内容的提问来源于stack exchange,提问作者Rushabh Shah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:48:26