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.