遇到的問題:
當前有兩個數組,已知的是兩個數組中,數組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**)
問題已解決
先跑第一個迴圈,在裡面跑第二個迴圈,去第二個數組找合格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);
回複內容:
遇到的問題:
當前有兩個數組,已知的是兩個數組中,數組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**)
問題已解決
先跑第一個迴圈,在裡面跑第二個迴圈,去第二個數組找合格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);
看到你自己解決了, 再給你個方法
/** * 從多維陣列中抽取一列'img_url'組成新數組, 並使用多維陣列中的id作為key * 當然你也可以不用array_column自己通過foreach拼接這個數組 */$idImgMap = array_column($shopImageName, 'img_url', 'id'); foreach ($shopPrizeName as &$value) { $value['img_url'] = $idImgMap[$value['id']];}
這個實現的演算法複雜度是 2O(n), 你的是O(n^2), 所以這個效能會更好一點