2010-08-30 75 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(),然后反序列化所得到的一组数组。