Heim > Backend-Entwicklung > PHP-Problem > So entfernen Sie Duplikate aus einem zweidimensionalen Array in PHP

So entfernen Sie Duplikate aus einem zweidimensionalen Array in PHP

PHPz
Freigeben: 2023-04-19 09:55:51
Original
564 Leute haben es durchsucht

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')
);
Nach dem Login kopieren

Wenn wir die Funktion array_unique() verwenden, um Duplikate zu entfernen, wie unten gezeigt:

$arr = array_unique($arr);
Nach dem Login kopieren

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);
Nach dem Login kopieren

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);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage