array_unique() für multidimensionale Arrays

August 2010

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.

Siehe auch:
 


Andere Einträge


Kommentare

#1
von Dirk am 15.05.2012
Perfekt! Genau solch eine Funktion habe ich gesucht...
Danke!

#2
von Thorsten am 25.05.2012
Super! Danke hat mir Zeit gespart es selber zu schreiben.
Außerdem ist es auch gut geschrieben.
DANKE !!!!!

#3
von th3jh am 23.07.2012
Ein Traum wird war, ich darf heute weiter Faul bleiben =). Die Funktion ist genial!

#4
von Fred am 30.10.2012
Vielen Dank! Perfekt die Funktion!!!

#5
von RainerH am 02.11.2012
Hi Florian,

ein sauberer und schöner Code! Vielen Dank!
Werde öfters vorbeischauen!!!

Gruß
Rainer