【问题标题】:how to combine 2 multidimensional arrays and have duplicates removed如何组合 2 个多维数组并删除重复项
【发布时间】:2012-09-21 21:20:32
【问题描述】:

如何根据两个数组(在 PHP 中)创建一个新的多维数组,以便合并数组并删除所有重复项。示例:

第一个数组:

Array 
(
  [0] => Array
    (
        [id] => 0001
        [name] => sample name 1
    )

  [1] => Array
    (
        [id] => 0002
        [name] => sample name 2
    )
  [3] => Array
    (
        [id] => 0003
        [name] => sample name 3
    )
)

第二个数组:

Array 
(
  [0] => Array
    (
        [id] => 0002
        [name] => sample name 2
    )
  [1] => Array
    (
        [id] => 11323
        [name] => blah blah
    )
)

所以新数组看起来像这样:

Array 
(
  [0] => Array
    (
        [id] => 0001
        [name] => sample name 1
    )

  [1] => Array
    (
        [id] => 0002
        [name] => sample name 2
    )
  [3] => Array
    (
        [id] => 0003
        [name] => sample name 3
    )
  [4] => Array
    (
        [id] => 11323
        [name] => blah blah
    )
)

【问题讨论】:

    标签: php arrays


    【解决方案1】:

    你可以这样做

    $array1 = Array(
            0 => Array("id" => "0001","name" => "sample name 1"),
            1 => Array("id" => "0002","name" => "sample name 2"),
            3 => Array("id" => "0003","name" => "sample name 3"));
    
    $array2 = Array(
            0 => Array("id" => "0002","name" => "sample name 2"),
            1 => Array("id" => "11323","name" => "blah blah"));
    
    $output = array_map("unserialize", array_unique(array_map("serialize", array_merge($array1,$array2))));
    
    var_dump($output);
    

    输出

    array
      0 => 
        array
          'id' => string '0001' (length=4)
          'name' => string 'sample name 1' (length=13)
      1 => 
        array
          'id' => string '0002' (length=4)
          'name' => string 'sample name 2' (length=13)
      2 => 
        array
          'id' => string '0003' (length=4)
          'name' => string 'sample name 3' (length=13)
      4 => 
        array
          'id' => string '11323' (length=5)
          'name' => string 'blah blah' (length=9)
    

    【讨论】:

    • 很棒的解决方案 - 完美运行!还有一个问题,对新数组进行排序以便我可以按 id 或 name 对其进行排序的最佳解决方案是什么?我是新来的,所以让我知道是否应该将其作为一个单独的问题发布。再次感谢!!
    【解决方案2】:

    你可以序列化每个子数组,使用array_unique,然后反序列化:

    $arr = array_merge($arr1,$arr2);
    foreach($arr as &$a) {
        $a = serialize($a);
    }
    $arr = array_values(array_unique($arr));
    foreach($arr as &$a) {
        $a = unserialize($a);
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-27
      • 1970-01-01
      • 2016-11-04
      • 1970-01-01
      • 2014-01-27
      • 2013-08-22
      • 1970-01-01
      • 2017-12-31
      • 1970-01-01
      相关资源
      最近更新 更多