【已解決】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學習者快速成長!