1

2 つの配列 (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
    )
)

2 番目の配列:

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
    )
)
4

2 に答える 2

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)
于 2012-09-21T21:38:37.277 に答える
0

各サブアレイをシリアル化し、 を使用して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);
}
于 2012-09-21T21:34:20.970 に答える