Wenn ich eine foreach-Schleife über ein assoziatives Array in PHP führe, ist die Reihenfolge, in der es ausgeführt wird, die Reihenfolge, in der es definiert ist.
Zum Beispiel:
%Vor%Ausgaben:
%Vor%Während
%Vor%Ausgaben:
%Vor%Meine Frage lautet also: Ist dieses Verhalten auf einer Spezifikationsebene definiert? Kann ich mit einiger Sicherheit feststellen, dass dieses Verhalten in zukünftigen PHP-Versionen nicht geändert wird?
Aus dem PHP-Handbuch
Ein Array in PHP ist eigentlich ein geordnetes Karte. Eine Map ist ein Typ, der assoziiert wird Werte zu Schlüsseln. Dieser Typ ist optimiert für verschiedene Verwendungszwecke; es kann sein behandelt als ein Array, Liste (Vektor), Hash - Tabelle (eine Implementierung von a Karte), Wörterbuch, Sammlung, Stapel, Warteschlange und wahrscheinlich mehr.
und
Arrays sind geordnet. Die Reihenfolge kann sein geändert durch verschiedene Sortierung Funktionen.
So können Sie sicher sein (zumindest momentan), dass die Bestellung aufrechterhalten wird. Ich wäre sehr überrascht, wenn sich dieses Verhalten ändern würde, weil es klar ausgesprochen wird und aufgrund dessen wird eine riesige Menge Code darauf beruhen.
Da Arrays immer geordnet sind und der einfachste und schnellste Weg zur Iteration des Arrays vom ersten zum letzten Element geht (es gibt also keinen Grund, das Verhalten von foreach () zu ändern), können Sie sein ziemlich sicher, dass sich dieses Verhalten nicht ändert.
Ihre Fragen scheinen so zu sein, als kämen Sie von der Programmierung in Perl, wo "Arrays" nicht garantiert in der Reihenfolge sind, in der Sie sie erstellt haben. Aber in PHP wurde es immer bestellt und wird immer sein, sonst wird viel Code kaputt gehen.
Tags und Links php