Problem mit array_unique()

Kopfballstar

Erfahrenes Mitglied
Hallo,

ich habe ein Problem mit der Funktion array_unique().
Und zwar wende ich diese Funktion auf ein Array an, wo jeder Inhalt vom Datentyp STRING ist.
Die Funktion funktioniert auch, entfernt alle doppelten Datensätze.
Allerdings besitzt das bereinigte Array auf einmal Datensätze die als Datentyp NULL deklariert werden.
Wie kann das sein das diese Funktion den Datentyp "zerstört"?
 
Eigentlich dürfte die Funktion das nicht machen. Daher kann ich das Problem auch nicht ganz nachvollziehen. Hast du vielleicht ein passendes Beispiel?
 
Hm, wie soll ich da ein passendes Beispiel geben.

Das Array besteht auf jeden nur aus Strings. Das zeigt mir eine Testausgabe, in der ich das Array durchlaufe und mir mit gettype() den Datentyp anzeigen lasse.

Dann führe ich die Funktion array_unique() aus.

Wenn ich das Array dann wieder durchlaufe sehe ich das zwar die doppelten Einträge gelöscht wurden, einige Datentypen aber kein String mehr sind.

Die Ausgabe sieht wie folgt aus:
string
string
string
string
string
string
string
string
NULL
string
NULL
NULL
NULL
 
Sind denn Daten verschwunden oder einfach nur zusätzliche Null-Elemente hinzugefügt? Denn in letzterem Fall könntest du diese einfach wieder entfernen.
 
Weder noch. Es sind genau die Daten vorhanden welche auch vorhanden sein sollen. Nur das jetzt einige eben vom Datentyp NULL sind.
 
Ich kann da echt nicht viel an Beispielen geben.

Hier ist noch alles in Ordnung:
Code:
$i=0;
while ($i < sizeof($anz)){
  settype($anz[$i],"string");
  trim($anz[$i]);
  echo gettype($anz[$i])."<br>";
  $i++;
}

Jetzt die Funktion:

Code:
$anz = array_unique($anz);

Und jetzt nochmal eine Ausgabe. Jetzt sind plötzlich Datentypen NULL

Code:
$i=0;
while($i < sizeof($anz)){
  echo gettype($anz[$i])."<br>";
  $i++;
}

Zwischendurch passiert nichts anderes.
 
Das ist auch kein Wunder. Denn die array_unique()-Funktion entfernt mehrfache Werte, hinterlässt dann aber eine Lücke. Und wenn du nun den Zähler jeweils um eins erhöhst, es ein Element mit diesem Index aber nicht gibt, wird Null ausgegeben. Lass dir mal den Inhalt der Variable mit der print_r()- oder var_dump()-Funktion ausgeben.
 
Zurück