Tach!
Es sind im Grunde nichtmal wirkliche Arrays (Felder), sondern meines Erachtens eher ein Konzept wie Hashmaps, auch assoziative Arrays genannt.
Ich kann doch auch Arrays mit numerischen Indizes erzeugen, wo ist das Problem?
Das "Problem" ist, dass "Array" als eine einfache Liste definiert ist und der Indexwert die Position darin angibt. Ein PHP-Array simuliert eine solche indexbasierte Liste nur, denn man kann ohne weiteres Lücken in diesen Indexwerten haben oder die Elemente umsortieren und den Key beibehalten. Somit gibt der Indexwert nicht einfach nur die Position an, sondern ist den Elementen direkt zugeordnet. Solch eine Struktur entspricht aber einer Map.
Das PHP-"Array" ist also (auch laut Handbuch) in Wirklichkeit eine geordnete Map (Ansammlung von Schlüssel-zu-Wert-Zuordnungen). Je nachdem, wie der Inhalt einer Map aussieht, ähnelt sie verschieden anderen Datentypen: Array, Dictionary, Collection, Stack, Queue, ... Sie ist damit recht universal einsetzbar.
Man kann also ein Array im eigentlichen Sinne simulieren, solange man bestimmte Voraussetzungen einhält: fortlaufende und lückenlose Keys. Und man kann auch mehrdimensionale Arrays simulieren, indem man indexbasierte Arrays als Elemente eines indexbasierten Arrays verwendest. Für mich ist ein mehrdimensionales Array eins, das gleichmäßig in seine Dimensionen strebt. Da man aber in PHP-Arrays Lücken reinbringen kann, "verkommt" eine solche Datensammlung mehr und mehr zu einer Baumstruktur. Und völlig vom mehrdimensionalen Gedanken losgelöst ist es, wenn man für die Keys keine fortlaufenden Werte sondern beliebige Strings verwendet.
Das PHP-Array ist wegen seiner Map als Basis eine sehr universelle Angelegenheit. Dieser Universalität sollte man sich bewusst sein. Man kann eben nicht immer wie bei herkömmlichen Arrays einfach mit for($i;...;$i++) über das Array gehen, sondern benötigt foreach, weil man mit for bei Lücken stolpert, wenn man sie nicht beachtet.
dedlfix.