2017-09-14 2 views
1

J'ai 2 tableaux multidimensionnels:Mapping deux tableaux multidimensionnels par clé en utilisant php

$array1 = array(
    [0]=>array(
     [items]=>array(
      'item_code'=>'12345', 
      'price'=>'145' 
     ) 
    ), 
    [1]=>array(
     [items]=>array(
      'item_code'=>'54321', 
      'price'=>'260' 
     ) 
    ), 
); 
$array2 = array(
    [0]=>array(
     [A]=>'12345' 
     [B]=>'IMG' 
     ), 
    ), 
    [1]=>array(
     [A]=>'54321' 
     [B]=>'PNG' 
     ), 
    ), 
); 

Je suis en train de cartographier les deux tableaux et ajouter un élément « type », ce qui équivaut à « B » colonne de array2 $ en array1, pour devenir un nouveau tableau:

$arrayRes = array(
    [0]=>array(
     [items]=>array(
      'item_code'=>'12345', 
      'price'=>'145', 
      'type' => 'IMG' 
     ), 
    ), 
    [1]=>array(
     [items]=>array(
      'item_code'=>'54321', 
      'price'=>'260', 
      'type' => 'PNG' 
     ), 
    ), 
); 

C'est là que je suis en train:

foreach ($array1 as $arr) { 
     foreach ($arr as $key1 => $value1) { 
       $items = $value1['items']; 
       foreach ($items as $item=>$itemValue){ 
        foreach ($array2 as $key2 => $value2){ 
         if($itemValue['item_code'] == $value2['A']){ 
          $items['type'] = $value2['B']; 
         } 
        } 
       } 
     } 
    } 

Mais il garde retou rning une erreur 'éléments de décalage de chaîne illégale' ''. Quelqu'un pourrait-il remarquer ce que j'ai fait de mal?

+0

$ items = value1 $; – deg

Répondre

1

solution simple:

$array1 = array(
    array(
     'items' => array(
      'item_code'=>'12345', 
      'price'=>'145' 
     ), 
    ), 
    array(
     'items'=>array(
      'item_code'=>'54321', 
      'price'=>'260' 
     ), 
    ), 
); 
$array2 = array(
    array(
     'A'=>'12345', 
     'B'=>'IMG' 
    ), 
    array(
     'A'=>'54321', 
     'B'=>'PNG' 
    ), 
); 

foreach ($array1 as &$row1) { 
    $item = $row1['items']; 
    foreach ($array2 as $row2) { 
     if ($row2['A'] == $item['item_code']) { 
      $item['type'] = $row2['B']; 
      break; 
     } 
    } 
    $row1['items'] = $item; 
} 
+0

Votre code fonctionne. Merci mec! – Tedxxxx