如何将一维数组按对应键合并到多维数组的子数组中?
解决方案:合并两个数组并匹配对应键值
你之前用array_push没效果是因为用错了方法——array_push是把整个第二个数组当成单个元素塞进第一个数组里,完全不是你要的「把第一个数组的元素逐个合并到第二个数组子项」的逻辑。
根据你两个数组键一致的前提,这里有两种简单的实现方式:
方法一:foreach循环(直观易理解)
先把第二个数组取出来存到变量里,然后通过索引遍历匹配:
// 先获取第二个数组的内容 $itemsArr = $items->getData(); // 遍历第二个数组,用引用直接修改原数组的子元素 foreach ($itemsArr as $index => &$item) { // 先检查对应索引的图片是否存在,避免索引越界报错 if (isset($imageArr[$index])) { $item['image'] = $imageArr[$index]; } } // 输出合并后的结果 print_r($itemsArr);
方法二:array_map函数(简洁写法)
用array_map同时遍历两个数组,把对应位置的子数组和图片值合并:
$itemsArr = $items->getData(); $mergedArray = array_map(function($item, $image) { $item['image'] = $image; return $item; }, $itemsArr, $imageArr); print_r($mergedArray);
这两种方法都能实现你要的效果:把第一个数组的每个元素作为image键值,对应加到第二个数组的每个子数组里。
内容的提问来源于stack exchange,提问作者TBS Mage
相关产品推荐
相关产品推荐

