array_unique / super_unique问题

时间:2011-03-20 04:43:15

标签: php arrays array-unique

我正在尝试删除基于'duplicate_check'的重复项以获取以下数组。似乎array_unique和super_unique函数都不起作用。我还尝试将两个相同的数组与一个循环函数内的循环进行比较,但由于数组中有数万行,所以它会耗尽时间。有什么帮助吗?

[1] => Array
    (
        [a] => abc
        [b] => 202
        [c] => 001
        [d] => 
        [e] => Graphic Commun
        [duplicate_check] => abc202001
    )

[2] => Array
    (
        [a] => abc
        [b] => 211
        [c] => 001
        [d] => Bard
        [e] => CAD Fundamentals
        [duplicate_check] => abc211001
    )
 [3] => Array
    (
        [a] => abc
        [b] => 211
        [c] => 001
        [d] => 
        [e] => 
        [duplicate_check] => abc211001
    )

1 个答案:

答案 0 :(得分:0)

好吧,我不知道你尝试过的方法(你应该把它添加到你的问题中)。但似乎你应该只使用一个循环来过滤条目:

$found = array();
foreach ($array as $i=>$row) {

    $check = "$row[a],$row[b],$row[c]";
    //$check = $row["duplicate_check"];

    if (@$found[$check]++) {
        unset($array[$i]);
    }
}

一个懒惰的解决方案(但可能不适合你的任务)也可能是:

=array_map("unserialize", array_unique(array_map("serialize", $array)));