Pregunta

Estoy tratando de eliminar los duplicados basados en la "duplicate_check' por la siguiente matriz.No parece ni array_unique ni super_unique función de las obras.También traté de comparar dos matrices idénticas con un bucle dentro de una función de bucle, pero que se acabe el tiempo, porque hay decenas de miles de líneas de la matriz.Alguna ayuda?

[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
    )
¿Fue útil?

Solución

Bueno, yo no sé acerca de su tratado de enfoque (debe agregar que a tu pregunta).Pero parece que usted sólo debe utilizar un bucle para filtrar las entradas:

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

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

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

Un perezoso solución (pero probablemente no a su tarea) también podrían ser:

=array_map("unserialize", array_unique(array_map("serialize", $array)));
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top