PHP:组合2个数组的快速方法(将B中的每个元素插入A的一个特定元素中)


PHP: Fast way to combine 2 arrays (insert every element from B into one specific element of A)

我得到了两个多维数组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]);
}