使用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;