Heim  >  Artikel  >  Backend-Entwicklung  >  [Gelöst] Problem beim Zusammenführen von PHP-Arrays

[Gelöst] Problem beim Zusammenführen von PHP-Arrays

WBOY
WBOYOriginal
2016-12-05 13:44:291074Durchsuche

Aufgetretene Probleme:
Derzeit gibt es zwei Arrays. Es ist bekannt, dass in den beiden Arrays die ID in Array 1 der PID in Array 2 entspricht. Das Problem besteht darin, die img_url in Array 2 in Go zusammenzuführen zur entsprechenden ID in Array 1.

Endlich, was erreicht werden muss:

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**)

[Gelöst] Problem beim Zusammenführen von PHP-Arrays

Problem gelöst

<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>

Antwortinhalt:

Aufgetretene Probleme:
Derzeit gibt es zwei Arrays. Es ist bekannt, dass in den beiden Arrays die ID in Array 1 der PID in Array 2 entspricht. Das Problem besteht darin, die img_url in Array 2 in Go zusammenzuführen zur entsprechenden ID in Array 1.

Endlich, was erreicht werden muss:

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**)

[Gelöst] Problem beim Zusammenführen von PHP-Arrays

Problem gelöst

<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>

Da Sie es selbst gelöst haben, gebe ich Ihnen eine andere Methode

<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>

Die Algorithmuskomplexität dieser Implementierung beträgt 2O(n) und Ihre ist O(n^2), sodass die Leistung besser ist

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn