проблема array_unique / super_unique - PullRequest
0 голосов
/ 20 марта 2011

Я пытаюсь удалить дубликаты на основе '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 голосов
/ 20 марта 2011

Ну, я не знаю о вашем проверенном подходе (вы должны добавить это к вашему вопросу). Но, похоже, вы должны просто использовать цикл для фильтрации записей:

$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)));
...