Mit der Entwicklung des Internets hat sich PHP zu einer der beliebtesten Programmiersprachen entwickelt. In der PHP-Entwicklung ist es häufig notwendig, die Datenstruktur von Arrays zu verwenden. In der tatsächlichen Entwicklung müssen wir häufig Deduplizierungsvorgänge für Arrays durchführen. In diesem Artikel erfahren Sie, wie Sie Duplikate aus zweidimensionalen Arrays in PHP entfernen.
Ein zweidimensionales Array ist ein großes Array, das aus einer Reihe von Arrays besteht. Wenn wir diese Arrays deduplizieren müssen, müssen wir die Funktion array_unique() in PHP verwenden. Wenn wir jedoch direkt die Funktion array_unique() verwenden, um doppelte Elemente in einem zweidimensionalen Array zu entfernen, können wir nicht den gewünschten Effekt erzielen.
Unten sehen Sie ein Beispiel für ein zweidimensionales Array, bei dem wir Duplikate entfernen müssen.
$arr = array( array('id'=>1, 'name'=>'Tom'), array('id'=>2, 'name'=>'Jerry'), array('id'=>3, 'name'=>'Bob'), array('id'=>1, 'name'=>'Tom') );
Wenn wir die Funktion array_unique() verwenden, um Duplikate zu entfernen, wie unten gezeigt:
$arr = array_unique($arr);
Dann werden wir feststellen, dass das Ausführungsergebnis nicht unseren Erwartungen entspricht. Wir müssen die folgende Methode verwenden, um Duplikate in einem zweidimensionalen Array korrekt zu entfernen.
Methode 1:
Zuerst konvertieren wir das Array, das dedupliziert werden muss, in einen String und verwenden dann die Funktion array_unique(), um Duplikate zu entfernen. Konvertieren Sie abschließend das Ergebnis in ein PHP-Array.
$str = ''; foreach ($arr as $k => $v) { $str .= implode(',', $v) . ';'; } $str = implode(',', array_unique(explode(';', trim($str, ';')))); $arr = array(); foreach (explode(';', $str) as $k => $v) { $arr[$k] = explode(',', $v); } print_r($arr);
Obwohl diese Methode doppelte Elemente in einem zweidimensionalen Array entfernen kann, ist sie umständlicher und nicht effizient.
Methode 2:
Wir können eine andere Funktion array_column() in PHP verwenden, die ein gesamtes Feld aus einem zweidimensionalen Array extrahieren und ein eindimensionales Array zurückgeben kann.
$arr = array( array('id'=>1, 'name'=>'Tom'), array('id'=>2, 'name'=>'Jerry'), array('id'=>3, 'name'=>'Bob'), array('id'=>1, 'name'=>'Tom') ); $idArr = array_column($arr, 'id'); $countArr = array_count_values($idArr); foreach ($arr as $k => $v) { if ($countArr[$v['id']] > 1) { unset($arr[$k]); } } print_r($arr);
Diese Methode ist relativ einfach und erfordert nur die Verwendung von zwei Funktionen. Verwenden Sie zunächst die Funktion array_column(), um alle Werte des ID-Felds im zweidimensionalen Array zu extrahieren, und verwenden Sie dann die Funktion array_count_values(), um diese Werte zu zählen. Schließlich wird das ursprüngliche Array durchlaufen. Wenn die entsprechende ID-Anzahl im $idArr-Array größer als 1 ist, bedeutet dies, dass das Element entfernt werden muss.
Wie aus den beiden oben genannten Methoden ersichtlich ist, ist die Deduplizierung zweidimensionaler Arrays etwas problematischer als die Deduplizierung eindimensionaler Arrays. Aber wenn wir geeignete Methoden anwenden, können wir Duplikate immer noch relativ einfach entfernen.
Das obige ist der detaillierte Inhalt vonSo entfernen Sie Duplikate aus einem zweidimensionalen Array in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!