Der Martin: array_unique sortiert nicht richtig und macht Fehler?

Beitrag lesen

Hi,

$ar = array('rot','gelb','grün','rot','234fw343','blau','gold');

$ar1 = array_unique($ar);
$ar2 = array_unique($ar,SORT_REGULAR);
$ar3 = array_unique($ar,SORT_NUMERIC);
$ar4 = array_unique($ar,SORT_STRING);
$ar5 = array_unique($ar,SORT_LOCALE_STRING);

  

> Aber dass bei numerischer Sortierung einfach Werte wegfallen, dürfte doch auch nicht richtig sein?  
  
doch, ich verstehe das so, dass das Array zunächst anhand der numerischen Werte seiner Feldinhalte sortiert und dann auf eindeutige Werte (unique) reduziert wird. Der Sortierschritt ergäbe theoretisch folgenden Zwischenstand:  
  

> Array  
> (  
>     [0] => rot  
>     [1] => gelb  
>     [2] => grün  
>     [3] => rot  
>     [5] => blau  
>     [6] => gold  
>     [4] => 234fw343  
> )  
  
Warum das? Weil alle Werte, die nicht mit einer Ziffer beginnen, numerisch als 0 interpretiert werden. Und wenn jetzt als zweiter Schritt die Eliminierung der mehrfach auftretenden Werte durchläuft, fallen "gelb", "grün", das zweite "rot", "blau" und "gold" raus, weil sie alle 0 ergeben, der Wert 0 aber durch den ersten "rot"-Eintrag schon da ist.  
  
So long,  
 Martin  
  
  
PS: Wieso markierst du deine PHP-Debugausgaben hier als HTML?

-- 
Keine Sorge, wir finden für jede Lösung ein Problem.  
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(