2012-09-21 4 views
1

두 배열 (PHP)을 기반으로하는 새로운 다차원 배열을 만들어 배열을 결합하고 중복을 제거하는 방법은 무엇입니까? 예 :2 다차원 배열을 결합하고 중복을 제거하는 방법

먼저 배열 :

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

답변

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) 
+0

훌륭한 솔루션을 수행 할 수 있습니다 - 완벽했다! 한 가지 더 궁금한 점은 새 배열을 정렬하여 ID 또는 이름으로 정렬 할 수있는 최상의 솔루션은 무엇일까요? 나는 여기 주위에 새로 왔기 때문에 이것을 별도의 질문으로 게시해야하는지 알려 주시기 바랍니다. 다시 한 번 감사드립니다! – user1637621

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); 
} 
관련 문제