2012-02-23 58 views
0

所有 刪除重複值,我想從這個數組刪除重複值在多維數組

Array 
(
    [0] => Array 
     (
      [0] => Ajay Patel 
      [1] => Tag 1 
     ) 

    [1] => Array 
     (
      [0] => Tag 1 
      [1] => Tag 3 
     ) 

    [2] => Array 
     (
     ) 

    [3] => Array 
     (
     ) 

    [4] => Array 
     (
     ) 

) 

我試圖從How to remove duplicate values from a multi-dimensional array in PHP

$結果2 = array_map(「反序列化」,array_unique(array_map這個解決方案(「serialize」,$ result2)));

但我認爲這裏有什麼不對,我得到這個結果。

Array 
(
    [0] => Array 
     (
      [0] => Ajay Patel 
      [1] => Tag 1 
     ) 

    [1] => Array 
     (
      [0] => Tag 1 
      [1] => Tag 3 
     ) 

    [2] => Array 
     (
     ) 

) 

我想是

Array 
      (
       [0] => Ajay Patel 
       [1] => Tag 1 
       [2] => Tag 3 
      ) 

標籤1被刪除,因爲它的2倍......

+1

@silly你不能看到「標籤1」兩次,請先理解問題。 – 2012-02-23 08:08:39

+0

請發佈結果 - 你期望 – silly 2012-02-23 08:10:49

+1

Ajay,這是一個數組數組。存在於主陣列中的數組彼此是唯一的,即使它們具有一些共同的值。 – 2012-02-23 08:10:54

回答

2
$result2 = array_unique(call_user_func_array('array_merge',$result2)); 
+0

謝謝!它適用於我,但邏輯上我不清楚它是如何工作的.BTW謝謝 – 2012-02-23 08:33:45

+0

內部部分(即call_user_func_array('array_merge',$ result2))將子數組合併到一個平面數組中。外部array_unique()調用刪除重複的值。 這是一個很好的二維數組解決方案,但不會針對n維數組進行縮放。你的問題最初是指哪一個。所以我不太確定這是否真的解決了您的問題,或者您的問題標題是否有誤。 – nem75 2012-02-23 09:07:09

2

試試這個

$result = array(); 
function merge_values(array &$array, $mixed) { 
    if(is_array($mixed)) { 
     foreach($mixed as $tags) { 
      merge_values($array, $tags); 
     } 
    } 
    else { 
     if(null !== $mixed && strlen($mixed) > 0 && false === array_search($mixed, $array)) { 
      $array[] = $mixed; 
     } 
    } 
} 

merge_values($result, $array); 
print_r($result); 
1

我想你應該嘗試這

function uniqueElements($outerArray){ 
    $result=array(); 
    foreach ($outerArray as $innerArray){ 
     $result=array_merge($innerArray); 
    } 

return array_unique($result); 
} 
+0

這也適用,謝謝 – 2012-02-23 08:40:19