>  기사  >  백엔드 개발  >  [해결됨] PHP 배열 병합 문제

[해결됨] PHP 배열 병합 문제

WBOY
WBOY원래의
2016-12-05 13:44:291081검색

발생한 문제:
현재 두 개의 배열이 있습니다. 두 배열에는 배열 1의 id가 배열 2의 pid와 동일한 것으로 알려져 있습니다. 문제는 배열 2의 img_url을 Go에 병합하는 것입니다. 배열 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을 Go에 병합하는 것입니다. 배열 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)이므로 성능이 더 좋아질 것입니다

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.