我得到了两个多维数组A和B。A的每个元素在B中都有对应的元素。我想把这两个部分组合起来。
php有一个方法来完成这样的任务吗。
运行2个循环并检查匹配似乎有点低效。
示例:
$a = array(
'0' => array(
'id' = 1,
'value_a' = 'v1'),
'1' => array(
'id' = 2,
'value_a' = 'v2'),
'2' => array(
'id' = 3,
'value_a' = 'v3'),
$b = array(
'0' => array(
'a_id' = 3,
'value_b' = 'v3'),
'1' => array(
'a_id' = 1,
'value_b' = 'v1'),
'2' => array(
'a_id' = 2,
'value_b' = 'v2')
结果:
$c = array(
'0' => array(
'id' = 3,
'value_a' = 'v3'),
'a_id' = 3,
'value_b' = 'v3'),
'1' => array(
'id' = 1,
'value_a' = 'v1'),
'a_id' = 1,
'value_b' = 'v1'),
'2' => array(
'id' = 2,
'value_a' = 'v2'),
'a_id' = 2,
'value_b' = 'v2')
更新
循环方法:
foreach ($a as $a_item) {
foreach ($b as $b_item) {
if ($a_item['id'] == $b_item['a_id']) {
$c[] = array_merge($a_item, $b_item);
}
}
}
Thx
您实际上想要合并父数组的值。PHP没有这样的内置方法来执行您的任务,但您可以:
$combined_array = array_map(function($arr1, $arr2) { return array_merge($arr1, $arr2); }, $A, $B));
只有1个循环和array_merge
$result = array();
foreach($a as $k=>$v){
$result[] = array_merge($v, $b[$k]);
}