2010-08-30 20 views
12

Wir können array_unique() für doppelte Einträge aus einem einzigen multidimensionalen Array in PHP verwenden. Ist es möglich, mit mehrdimensionalen Array zu verwenden? Es funktioniert nicht für mich!PHP entfernen doppelte Werte aus mehrdimensionalen Array

Hier ist, was das Array sieht aus wie

Array (
    [0] => Array ([0] => 1001 [1] => john [2] => example) 
    [1] => Array ([0] => 1002 [1] => test [2] => dreamz) 
    [2] => Array ([0] => 1001 [1] => john [2] => example) 
    [3] => Array ([0] => 1001 [1] => example [2] => john) 
    [4] => Array ([0] => 1001 [1] => john [2] => example) 
) 

Wer kann mir bitte helfen ...

+0

muss ein Duplikat von: http://stackoverflow.com/questions/307674/how-to-remove-duplicate-values-from-a-multi-dimensional-array-in-php oder http: // stackoverflow .com/questions/1861682/php-multi-dimensional-array-remove-duplicate –

+0

Oh ... sorry ... sorry .. – abhis

+1

Alle Funktionen wie array_unique() sind nur eine Syntax Zucker für wirklich einfache Schleifen. Mit sehr wenig Aufwand können Sie es selbst tun. Versuche, hinterhältiger zu sein. Programmieren ist nicht immer nur Kopieren-Einfügen, manchmal erfordert es intelligenteres Arbeiten. –

Antwort

38

Die Benutzer Kommentare auf der array_unique Seite auf dieses etwas Licht tun vergießen. Sie werden in diesen Kommentaren höchstwahrscheinlich einige versteckte Juwelen finden - es ist eine sehr praktische Dokumentation.

Nur ein schneller Browser durch den offenbarte folgenden Duplikate aus einem multidimensionalen Array entfernen:

<?php 
function super_unique($array) 
{ 
    $result = array_map("unserialize", array_unique(array_map("serialize", $array))); 

    foreach ($result as $key => $value) 
    { 
    if (is_array($value)) 
    { 
     $result[$key] = super_unique($value); 
    } 
    } 

    return $result; 
} 
?> 
+1

Danke für die Hilfe Russell.Der Code funktioniert wie ein Champion. – abhis

+3

@Ajith Vergessen Sie nicht etwas? "Danke für die Hilfe" ist ein grünes Häkchen neben der Antwort. –

+0

Russell ich bin in der Lage zu entfernen dupliziert mit dieser Funktion, aber habe 1 Problem, wie Sie das Array innerhalb der Array wieder indizieren..Hope können Sie Licht werfen –

2

Sie könnten die Unterfelder (über serialize()) in ein neues Array serialisiert wird, dann array_unique() auf dem ausführen, und dann unserialisieren Sie die resultierende Gruppe von Arrays.

Verwandte Themen