【问题标题】:Merge two multidimensional arrays, preserve numeric keys, and combine values inside array合并两个多维数组,保留数字键,并在数组内组合值
【发布时间】:2015-12-27 13:27:17
【问题描述】:

我有两个数组,想将它们组合/合并/放在一起。

$arr1 = array(
    0 => array(1, 2),
    1 => array(5, 6)
);

$arr2 = array(
    0 => array(2, 3),
    1 => array(6, 7)
);    

come_together_right_now($arr1, $arr2); // the missing function?

结果是:

Array ( 
    [0] => Array ( 
        [0] => 1 
        [1] => 2 
        [2] => 3 
    )
    [1] => Array ( 
        [0] => 5 
        [1] => 6 
        [2] => 7 
    )

数组函数太多了! array_mergearray_combine 以及递归替代方法似乎替换了这些值,并且它们不保留数字键。我该怎么做?

【问题讨论】:

    标签: php arrays multidimensional-array merge


    【解决方案1】:

    假设它们总是有相同的键!

    $result = array();
    
    foreach($arr1 as $key=>$array) {
        $result[$key] = array_merge($array, $arr2[$key]);
    }
    

    【讨论】:

    • 由于键是数字,因此正在创建重复项。是否有一个 array_merge 我可以放在循环中来覆盖重复项?我编辑了我的结果集以显示我的意思。
    • 试试array_unique(array_merge($array, $arr2[$key]));
    • 对我来说很完美——它使子数组保持原样
    【解决方案2】:

    我可能会迟到回答这个问题,但这可能会帮助您简单地使用 array_map,array_mergearray_unique 函数,如 as

    $result = array_map('array_unique',array_map('array_merge',$arr1,$arr2));
    print_r($result);
    

    输出

    Array ( 
        [0] => Array ( 
            [0] => 1 
            [1] => 2 
            [2] => 3 
        )
        [1] => Array ( 
            [0] => 5 
            [1] => 6 
            [2] => 7 
        )
    

    Demo

    【讨论】:

      猜你喜欢
      • 2016-12-14
      • 1970-01-01
      • 2014-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 2011-03-14
      相关资源
      最近更新 更多