array_unique() für multidimensionale Arrays

Die PHP-Funktion array_unique() ist gebräuchlich, um doppelte Einträge aus einem Array zu entfernen. Allerdings hat die Funktion einen Haken: Sie funktioniert bei multidimensionalen Arrays nicht so, wie sie sollte, stattdessen liefert sie "wirres Zeug".

Mit der folgenden Funktion array_multi_unique() lassen sich aber auch mehrdimensionale Arrays von Duplikaten säubern:

<?php
function array_multi_unique($multiArray) {
    /* array_unique() für multidimensionale Arrays
     * @param    array    $multiArray = array(array(..), array(..), ..)
     * @return   array    Array mit einmaligen Elementen
    **/
    $uniqueArray = array();
    // alle Array-Elemente durchgehen
    foreach ($multiArray as $subArray) {
        // prüfen, ob Element bereits im Unique-Array
        if (!in_array($subArray, $uniqueArray)) {
            // Element hinzufügen, wenn noch nicht drin
            $uniqueArray[] = $subArray;
        }
    }
    return $uniqueArray;
}
?>

Anwendungsbeispiel:

<?php
$array = array(
    array('ab', 12),
    array('cd', 34),
    array('ab', 12)
);
// mehrfache Einträge entfernen
$unique = array_multi_unique($array);
?>

Mit dieser Funktion kann man übrigens auch "normale" eindimensionale Arrays bereinigen.