Tach.
Im Grunde genommen gibt es keine mehrdimensionalen Arrays unter PHP. Ein Array in PHP ist eine Liste, die Elemente beliebigen Typs aufnehmen kann. Darunter zählt auch der Array-Typ. Du hast also am Ende ein Array mit Arrays drin.
Du hast in letzter Zeit häufiger auf diesen "Unterschied" hingewiesen, und ich fragte mich jedesmal, warum dir das so wichtig ist bzw. was daraus für Konsequenzen für den Programmierer folgen sollen. Nun schreibst du etwas mehr dazu ...
Da die Typen der Elemente beliebige sein können, ist es auch die Größe der Daten.
In PHP werden Variablen intern durch ein C-Struct repräsentiert, welches u. a. den Wert und den (aktuellen) Typ der Variablen speichert. Es gibt also keine Unterschiede in der Größe, nur weil die Typen unterschiedlich sind. Arrays werden in PHP über Hashmaps verwaltet, die eben solche Structs enthalten.
Außerdem kann die Anordnung der Schlüssel beliebig sein. Das bedeutet nun, dass man die Speicherposition der Koordinate (x,y) nicht anhand von x·y·Elementgröße errechnen kann, sondern für den Zugriff immer einzeln das äußere Array und dann eins der inneren Arrays nach den jeweiligen x- und y-Schlüsseln durchsucht werden müssen.
Das klingt gefährlicher als es wirklich ist, denn das Finden des Wertes an der "Koordinate (x,y)" bedeutet in diesem konkreten Beispiel bloß das Abfragen jeweils eines Werte aus zwei Hashmaps. Es müssen also nicht die einzelnen Arrays Schritt für Schritt durchsucht werden, wie du andeutest -- zumindest habe ich deinen letzten Satz oben so verstanden.
Once is a mistake, twice is jazz.