Problem: array_unique()

  • Themenstarter Themenstarter Lukasz
  • Beginndatum Beginndatum
L

Lukasz

Hallo

Ich habe bei der Fehlersuche ein Problem, und kann mir nicht erklären woher es kommt. Die Funktion array_unique() nach PHP.net:

array array_unique ( array array )


array_unique() nimmt array und gibt ein neues Array zurück, aus dem alle doppelten Einträge entfernt wurden.

Nur leider habe ich folgendes Problem festgestellt:
PHP:
<?
$a = array(1,1,1,1,1,1,1,2,2,2,2,2,2);
$a = array_unique($a);
for($i=0; $i <= count($a)-1; $i++) {
	echo 'value: '.$a[$i].'<br>';
}
?>

Die Ausgabe sieht wie folgt aus:
value: 1
value:

Die 2 ist verschwunden. Anstatt dessen gibt es einen Emptystring, oder garnichts. Wer kann mir erklären warum?
 
Manchmal hilft es, einen Handbucheintrag ganz zu lesen :)
http://de.php.net/array_unique hat gesagt.:
Beachten Sie, dass Schlüssel bewahrt bleiben.
Die „2“ wird also nicht ausgegeben, weil sie nicht an Position 1 im Array steht (sondern frühestens auf Position 7).

Kleiner Tipp: bei der Fehlersuche immer error_reporting auf E_ALL setzen. Dann wird nämlich folgendes ausgegeben:
Code:
value: 1<br>value: <br>PHP Notice:  Undefined offset:  1 in D:\htdocs\spielwiese.php on line 19

Beheben kann man dieses Verhalten, indem man foreach zum Iterieren des Arrays verwendet oder dem Aufruf von [phpf]array_unique[/phpf] noch ein [phpf]array_values[/phpf] hinterher jagt.
 
Zurück