Mike: array_unique sortiert nicht richtig und macht Fehler?

Beitrag lesen

Hallo,

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.

ok, etwas verwirrend. Selbst wenn deine Schlussfolgerung richtig ist, ist dieses Verhalten wirklich so gewünscht bei dieser Funktion? Dass hier eben unkalkulierbar Werte wegfallen? Ich hätte es noch verstanden wenn es gar keinen Output gäbe, weil kein Wert numerisch oder nur der 234fw343 Wert weil dieser zumindest mit einer Zahl anfängt. Aber so...

Nehmen wir mal den normalen Fall an, für den diese Funktion eigentlich konzipiert sein sollte:

Du hast ein großes Array mit vielen auch gleichen Werten. Die Doppler sollen raus und das Ganze, wie auch immer(alphabetisch, usw...), sortiert werden.

Was passiert? Sortierung erfolgt nicht, also kein Verlass. Schlimmer noch, sortierst Du numerisch, weil Du denkst da wären nur Zahlen drin, was aber nicht so ist, spuckt die Funktion nur Teile raus. Soll das wirklich so gewollt sein? Zumindest eine der String-Sortierungen sollte doch funktionieren?

Gruss
Mike

PS: Wieso markierst du deine PHP-Debugausgaben hier als HTML?

Weil es ja nur Browseroutput ist und kein PHP-Code. Aber wenn es hier anders gewünscht ist, mach ich das gerne demnächst als PHP ;-)