Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php键映射两个多维数组_Php_Multidimensional Array_Mapping - Fatal编程技术网

使用php键映射两个多维数组

使用php键映射两个多维数组,php,multidimensional-array,mapping,Php,Multidimensional Array,Mapping,我有两个多维数组: $array1 = array( [0]=>array( [items]=>array( 'item_code'=>'12345', 'price'=>'145' ) ), [1]=>array( [items]=>array( 'item_code'=>'54321', 'price'=>

我有两个多维数组:

$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'
       ),
   ),
);
我试图映射这两个数组,并将一个'type'元素(等于$array2中的'B'列)添加到array1中,以成为一个新数组:

$arrayRes = array(
   [0]=>array(
       [items]=>array(
          'item_code'=>'12345',
          'price'=>'145',
          'type' => 'IMG'
       ),
   ),
   [1]=>array(
       [items]=>array(
          'item_code'=>'54321',
          'price'=>'260',
          'type' => 'PNG'
       ),
   ),
);
这就是我尝试的地方:

    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'];
                       }
                    }
              }
        }
   }
但它不断返回错误“非法字符串偏移量”项“”。有人注意到我做错了什么吗?

简单解决方案:

$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;
}

$items=$value1;