Wenn ein neuer Wert auf ein indiziertes Array gesetzt wird
%Vor%Die PHP-Dokumentation erklärt, wie es in der Position [MAX_INDEX + 1] hinzugefügt wird.
Wenn ein neuer Wert auf ein assoziatives Array gesetzt wird
%Vor%Es funktioniert genauso, aber ich sehe keine Erklärung in der Dokumentation, um zu bestätigen, wie oder warum es das tut. Die Reihenfolge scheint in meiner Implementierung konsistent zu sein, aber woher weiß ich, dass die Reihenfolge gleich bleibt? Weiß jemand, wie PHP dies am Backend implementiert?
Wie sind assoziative Arrays in PHP implementiert? könnte Ihnen helfen einige Einblicke.
Es scheint, dass PHP-Arrays im Wesentlichen Hash-Tabellen sind, so dass die Reihenfolge des Arrays gleich bleibt, bis Sie es neu anordnen (z. B. durch Sortieren des Arrays).
BEARBEITEN: Es scheint, dass dies nach unten geht, erlauben Sie mir, die Quellen, mit denen ich verlinkt habe, explizit in den Kommentar hier einzubeziehen ...
"PHP assoziative Arrays sind in der Tat eine Implementierung von HashTables", von Wie wird das PHP-Array auf der C-Ebene implementiert?
Auch von dieser Quelle: "Das PHP-Array ist eine verkettete Hash-Tabelle (Nachschlagen von O (c) und O (n) bei Schlüsselkollisionen), die int- und string-Schlüssel erlaubt. Es verwendet 2 verschiedene Hash-Algorithmen um die beiden Typen in denselben Hash-Schlüsselraum einzupassen. "
"Alles ist ein HashTable" aus Ссылка
MAX_INDEX hat eigentlich nichts mit der Bestellung zu tun.
Sie können
und array werden diese Reihenfolge beibehalten.
PHP-Array ist eine geordnete Map, also ist es die Map, die die Reihenfolge hält.
Array-Elemente behalten nur die Reihenfolge, seit sie hinzugefügt wurden (oder sie wurde vollständig von einer Array-Manipulationsfunktion modifiziert).
das ist alles.
Alle PHP-Arrays, numerisch und assoziativ, sind als sogenannte "Ordered Hash-Table" implementiert. Dies ist ein datenwissenschaftlicher Begriff, der sich wie folgt zusammensetzt: "Ein vernünftiger schneller Schlüsselwertspeicher, der die Reihenfolge speichert, in der Schlüssel und Werte eingefügt wurden". Mit anderen Worten, PHP-Arrays haben ein bisschen Speicher, der zum Zweck der Reihenfolge gespeichert wird. Jedes Mal, wenn Sie etwas einfügen, fügt PHP automatisch die Reihenfolge ein.
Interessanterweise passiert dies auch für numerische Schlüssel - wenn Sie also die Werte 1,2,3,4,5 in ein PHP-Array schreiben, verfolgt PHP die Reihenfolge immer noch separat. Wenn das verschwenderisch klingt, ist es, weil es ist! Es rettet jedoch Gehirnzyklen, die verwendet werden können, um die Probleme anderer zu lösen, real oder imaginär.
Tags und Links php associative-array