PHP如何向指定多维数组中添加元素?
如何给PHP多维数组添加元素?
嘿,我来帮你搞定这个PHP数组的问题!你现在要给这个多维数组里的每个子数组添加一个User键(值为1)对吧?先看看你原来的代码问题出在哪,再给你几个正确的实现方法。
首先,你的原数组结构是这样的:
$data = [ 'Items' => [ ['Item' => 211, 'Unit' => 11, 'Quantity' => 2, 'GST' => true], ['Item' => 210, 'Unit' => 11, 'Quantity' => 1, 'GST' => true] ] ];
你之前写的foreach代码有两个小问题:
- PHP的
foreach默认是值传递,也就是说循环里的$Item只是原数组元素的副本,修改它不会影响原数组里的内容; 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
相关产品推荐
相关产品推荐

