Frage

Ich versuche, Duplikate basierend auf 'Duplicate_Check' für das folgende Array zu entfernen. Es scheint weder Array_unique noch Super_unique -Funktionen zu wirken. Ich habe auch versucht, zwei identische Arrays mit einer Schleife in einer Schleifenfunktion zu vergleichen, aber es geht nicht um Zeit, da es im Array Zehntausende Zeilen gibt. Irgendeine Hilfe?

[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
    )
War es hilfreich?

Lösung

Nun, ich weiß nichts über Ihren bewährten Ansatz (Sie sollten das Ihrer Frage hinzufügen). Aber es scheint, dass Sie einfach eine Schleife verwenden sollten, um Einträge zu filtern:

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

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

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

Eine faule Lösung (aber wahrscheinlich nicht zu Ihrer Aufgabe) könnte auch sein:

=array_map("unserialize", array_unique(array_map("serialize", $array)));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top