So entfernen Sie Duplikate aus einem Array in PHP

Nachdem wir schon die Funktion array_walk zur Array-Manipulation vorgestellt haben, sehen wir uns diesmal eine oft gebrauchte Funktion in PHP an, nähmlich Duplikate (doppelte Werte) aus einem gegebenen Array zu entfernen. PHP bietet hierfür eine eigene Funktion array_unique an. Wir zeigen hier wie man diese anwendet:

Verwendung von array_unique()

Eine einfache und elegante Methode, um Dubletten aus einem Array zu entfernen, ist die Verwendung der Funktion array_unique(). Diese Funktion entfernt alle doppelten Werte aus einem Array und gibt das bereinigte Array zurück. Es ist wirklich so einfach! Hier ist ein Beispielcode:

$meinArray = array("Apfel", "Birne", "Apfel", "Banane");
$bereinigtesArray = array_unique($meinArray);
print_r($bereinigtesArray);Code-Sprache: PHP (php)

Nach dem Ausführen des Codes erhält man ein Array ohne Duplikate:

Array
(
    [0] => Apfel
    [1] => Birne
    [3] => Banane
)Code-Sprache: PHP (php)

Wie man sieh sind zwar die Werte einmalig, aber die Indexe noch vom ursprünglichen Array erhalten ([0], [1], [3]). Will man die Indexe auch neu aufbauen, kann man dies mit der Funktion array_values erreichen. Die array_values() Funktion ordnet die Indizes des Arrays neu an und gibt dann ein neues Array zurück:

$meinArray = array("Apfel", "Birne", "Apfel", "Banane");
$bereinigtesArray = array_values(array_unique($meinArray));
print_r($bereinigtesArray);

/*
Array
(
    [0] => Apfel
    [1] => Birne
    [2] => Banane
)
*/Code-Sprache: PHP (php)

Alternative Möglichkeit mit array_flip + array_keys

Eine weitere Möglichkeit, Duplikate in PHP aus einem Array zu entfernen, ist die Verwendung der Funktion array_flip. Die Funktion array_flip() dreht die Schlüssel und Werte eines Arrays um. Wir können hierbei die Tatsache ausnutzen, dass ein Array keine doppelten Schlüssel haben kann. Holen wir uns dann mit array_keys die Schlüssel des entstandenen Arrays, haben wir wieder das ursprüngliche Array aber ohne Duplikate.

Wir machen das Beispiel in 2 Schritten:

$meinArray = array("Apfel", "Birne", "Apfel", "Banane");
// Schritt 1
$gefliptesArray = array_flip($meinArray);
print_r($gefliptesArray);
// Schritt 2
$bereinigtesArray = array_keys($gefliptesArray);
print_r($bereinigtesArray);

/*
Array
(
    [Apfel] => 2
    [Birne] => 1
    [Banane] => 3
)
Array
(
    [0] => Apfel
    [1] => Birne
    [2] => Banane
)Code-Sprache: PHP (php)

Natürlich können wir beide Funktionen in einen Aufruf packen, und das ganze auch noch in eine eigene Funktion geben:

function duplikateEntfernen($array) {
  return array_keys(array_flip($array));
}

$ar = array("Apfel", "Birne", "Apfel", "Banane");
print_r(duplikateEntfernen($ar));
Code-Sprache: PHP (php)

Fazit

Das Entfernen von Duplikaten aus einem Array in PHP ist keine schwere Aufgabe. Mehrere Wege führen ans Ziel und man kann sehr leicht doppelte Einträge entfernen.