【已解决】php 数组合并的问题

WBOY
发布: 2023-03-03 11:10:01
原创
1032 人浏览过

遇到的问题:
当前有两个数组,已知的是两个数组中,数组1中的id等于数组2中的pid,问题是,要把数组2中的img_url合并到到数组1中对应的id下。

最终需要实现:

Array ( [0] => Array ( [id] => 7 [collection_id] => 1 [prize_num] => 1 [prize_name] => 立减20元 [total] => 10 ,**[url_img]=> /upload/business/1476342419.png** ) [1] => Array ( [id] => 8 [collection_id] => 1 [prize_num] => 2 [prize_name] => 全单8折 [total] => 20,**[url_img]=> /upload/business/1476348963.jpg**)

【已解决】php 数组合并的问题

问题已解决

<code>先跑第一个循环,在里面跑第二个循环,去第二个数组找符合条件的item
    foreach ($shopPrizeName as $key => $value) {
               foreach ($shopPImagesName as $k => $v) {
                   if($value['id'] == $v['pid'])
                   {
                       $value['img_url']    =    $v['img_url'];
                   }
               }
               $shopData[]    =    $value;
           }

           print_r($shopData);</code>
登录后复制
登录后复制

回复内容:

遇到的问题:
当前有两个数组,已知的是两个数组中,数组1中的id等于数组2中的pid,问题是,要把数组2中的img_url合并到到数组1中对应的id下。

最终需要实现:

Array ( [0] => Array ( [id] => 7 [collection_id] => 1 [prize_num] => 1 [prize_name] => 立减20元 [total] => 10 ,**[url_img]=> /upload/business/1476342419.png** ) [1] => Array ( [id] => 8 [collection_id] => 1 [prize_num] => 2 [prize_name] => 全单8折 [total] => 20,**[url_img]=> /upload/business/1476348963.jpg**)

【已解决】php 数组合并的问题

问题已解决

<code>先跑第一个循环,在里面跑第二个循环,去第二个数组找符合条件的item
    foreach ($shopPrizeName as $key => $value) {
               foreach ($shopPImagesName as $k => $v) {
                   if($value['id'] == $v['pid'])
                   {
                       $value['img_url']    =    $v['img_url'];
                   }
               }
               $shopData[]    =    $value;
           }

           print_r($shopData);</code>
登录后复制
登录后复制

看到你自己解决了, 再给你个方法

<code>/**
 * 从多维数组中抽取一列'img_url'组成新数组, 并使用多维数组中的id作为key
 * 当然你也可以不用array_column自己通过foreach拼接这个数组
 */
$idImgMap = array_column($shopImageName, 'img_url', 'id'); 
foreach ($shopPrizeName as &$value) {
    $value['img_url'] = $idImgMap[$value['id']];
}</code>
登录后复制

这个实现的算法复杂度是 2O(n), 你的是O(n^2), 所以这个性能会更好一点

相关标签:
php
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!