2010-08-30 100 views
12

我們可以使用array_unique()從php中的單個多維數組中刪除重複的條目。是否可以使用多維數組?它不適合我!PHP從多維數組中刪除重複的值

這裏的數組是什麼樣子

Array (
    [0] => Array ([0] => 1001 [1] => john [2] => example) 
    [1] => Array ([0] => 1002 [1] => test [2] => dreamz) 
    [2] => Array ([0] => 1001 [1] => john [2] => example) 
    [3] => Array ([0] => 1001 [1] => example [2] => john) 
    [4] => Array ([0] => 1001 [1] => john [2] => example) 
) 

任何人都可以請幫我...

+0

必須重複:http://stackoverflow.com/questions/307674/how-to-remove-duplicate-values-from-a-multi-dimensional-array-in-php 或http:// stackoverflow .com/questions/1861682/php-multi-dimensional-array-remove-duplicate – 2010-08-30 06:27:04

+0

Oh ... sorry ... sorry .. – abhis 2010-08-30 06:31:35

+1

像array_unique()這樣的函數只是簡單循環的語法糖。只需很少的努力,你可以自己做。試着更狡猾。編程並不總是隻是複製粘貼,有時需要更聰明的工作。 – 2010-08-30 06:48:47

回答

38

array_unique頁面上的用戶評論做一些線索這光。您很可能會在這些評論中找到一些隱藏的寶石 - 這是一個非常方便的文檔。

剛剛經歷揭示了以下從多維數組中刪除重複快速的瀏覽器:

<?php 
function super_unique($array) 
{ 
    $result = array_map("unserialize", array_unique(array_map("serialize", $array))); 

    foreach ($result as $key => $value) 
    { 
    if (is_array($value)) 
    { 
     $result[$key] = super_unique($value); 
    } 
    } 

    return $result; 
} 
?> 
+1

感謝您的幫助羅素的代碼就像一個冠軍。 – abhis 2010-08-30 06:30:41

+3

@Aith你不忘記什麼? 「感謝您的幫助」是答案旁邊的綠色勾號。 – 2010-08-30 06:50:39

+0

羅素我能夠刪除重複使用此功能,但有1個問題如何重新索引陣列內的數組..hope你可以擺脫光 – 2015-05-02 07:18:38

2

您可以序列子陣列(通過serialize())到一個新的數組,然後運行上array_unique(),然後反序列化所得到的一組數組。