Klaus: Reihenfolge von assoziativen Arrays

Beitrag lesen

Hallo,

also assoziativen Arrays spricht man allgemein (d.h. datenstrukturtechnisch) keine Reihnfolge zu. Deswegen sollte man sich in PHP auch nicht auf die Reihnfolge verlassen.

Diese Aussage ist falsch. Arrays sind in PHP immer sortiert und haben eine definierte Reihenfolge, die man bei foreach feststellen und z.B. mit print_r oder var_dump sichtbar machen kann.

Schön und gut, aber wie ist die Ordnung? Nach Zeit des Eintragens? Alphabetische Ordnung der Keys?

Sicher hat eine Hashtable auch eine Ordnung, wenn ich das zugrundeliegende Array einfach durchiteriere. Sofern keine Kollisionen auftreten und meine Hashfunktion keine Zufallskomponente enthält, wäre die Ordnung sogar eindeutig.

Dem Thread steller ging es auch darum, _wie_ das geordnet ist. Und darüber hat sich bisher noch keiner geäußert.

Wenn die Ordnung von der Hashfunktion abhängt, dann bringt einem dies relativ wenig.

Nach ersten Tests scheint die Ordnung von der Reihnfolge des Eintragens/Erstellens abzuhängen (dafür würde auch die Listenfunktionen (prev, next) von PHP sprechen), verlassen würde ich mich aber nicht unbedingt darauf (und eben dies sagte ich). Außerdem sollte bei assoziativen Arrays die Ordnung/Position nicht unbedingt eine Rolle spielen, da dies etwas gegen das Konzept von assoziativen Arrays bzw. Hashmaps/Hashtables spricht. Für soetwas wären andere Datenstrukturen empfehlenswerter (leider ist PHP recht schlecht in der Unterstüzung dieser).

Grüße
Klaus