PHP如何不使用foreach循环查找多维数组子键并合并推送数据
解决方案
方案1:已知具体合并的键名,直接单步合并
如果已经明确要合并的商品键是item_43587、订单ID是55678,直接用array_merge合并对应数组即可:
$orders[55678]['items']['item_43587'] = array_merge( $orders[55678]['items']['item_43587'], $metas['item_43587'] );
方案2:多商品批量合并,完全不用手动写foreach
如果$metas里有多个商品的扩展数据要批量合并到所有订单的商品列表里,可以用PHP内置的array_replace_recursive递归合并函数,仅需2行代码:
// 构造和$orders结构对齐的临时数组 $merge_temp = [55678 => ['items' => $metas]]; // 递归合并:重复键后者覆盖前者,不存在的键自动新增 $orders = array_replace_recursive($orders, $merge_temp);
说明:
array_replace_recursive会按数组层级递归匹配键名,自动把第二个数组的内容合并到第一个数组中,完全符合你的需求,不需要手动写任何循环逻辑。如果有多个订单ID需要处理,只需调整$merge_temp的结构对应上$orders的层级即可。
内容的提问来源于stack exchange,提问作者Demuri Celidze
相关产品推荐
相关产品推荐

