Moin!
Mal als Beispiel (und deutlich angemerkt: Hier geht es NICHT um's Sortieren):
http://www.php.net/array_sliceNein, da gehts nicht ums Sortieren, sondern um etwas, was _danach_ folgen kann oder soll.
Das Ausschneiden eines Arrayteils hat mit dem Sortieren nichts zu tun - mit Ausnahme deiner speziellen Lösung des aktuellen Problems vielleicht.
Mit anderen Worten: Man nehme einfach positive Werte, und schon zählt array_slice() vom Anfang des Arrays. array_slice($array,0,3) liefert die Array-Elemente 0, 1 und 2 (3 Stück). Siehe dazu auch die Beispiele.
Schön wärs. Nach meinen bisherigen Erfahrungen (die sich nicht allein auf die Entwicklerei bei der Zizatesammlung stützen) ist das zumindest fragwürdig.
Wenn die Funktion im Widerspruch zu ihrer Beschreibung arbeitet, ist das ein Bug und sollte gemeldet werden.
In der Regel scheitert es daran, daß die "PHP-Logik" irgendwas andres als "Anfang des Arrays" ansieht, als sich erwarten läßt.
PHP sieht das erste Element eines Arrays als "Anfang des Arrays" an. Das ist nicht zwingend das Element mit dem kleinsten Key. Und es ist auch nicht zwingend das Element mit dem Key 0, auch wenn dieser Key existiert. PHP verwaltet ein Array als Liste - irgendeines der Elemente ist das erste, dann folgen weitere, und eines ist das letzte Element. Ein wenig Sonderbehandlung gibts, wenn numerische Indizes verwendet werden, alphanumerische Schlüssel hingegen werden einfach hinten an die Liste angehängt, wenn sie erstellt werden.
Die aktuelle Reihenfolge läßt sich mit var_dump, print_r, foreach und Konstrukten, die reset(), next(), prev() bzw. each() enthalten, ermitteln und nutzen.
Die Listeneigenschaft erlaubt es, Konstruktionen zu erstellen, die auf den ersten Blick widersinnig erscheinen: Ein zweidimensionales Array mit den zwei Informationen "Nachname" und "Vorname" wird man, wie man es von anderen Sprachen gewohnt ist, wohl so ablegen:
$namen[0]['vorname']='Sven';
$namen[0]['nachname']='Rautenberg';
$namen[1]['vorname']='Christoph';
$namen[1]['nachname']='Schnauss';
Will man diese Liste sortieren, muß man sich entscheiden: Zuerst Nachnamen, oder zuerst Vornamen? In jedem Fall ist eine benutzerdefinierte Sortierfunktion notwendig, die die einzelnen Elemente [0]... als Array entgegennimmt und mit dem Inhalt des Schlüssels ['vorname'] oder ['nachname'] (oder auch kombiniert) einen Stringvergleich macht.
Es geht aber auch umgekehrt:
$namen['vorname'][0]='Sven';
$namen['nachname'][0]='Rautenberg';
$namen['vorname'][1]='Christoph';
$namen['nachname'][1]='Schnauss';
Sortieren nach Nachname und Vorname läuft getrennt voneinander!
$namen['vorname'] = asort($namen['vorname']);
$namen['nachname'] = asort($namen['nachname']);
Jetzt einfach mal var_dump() drüberlaufen lassen...
- Sven Rautenberg
My sssignature, my preciousssss!