was du da gemacht hast ist auch kein 3-dimensionales array, sondern ein syntaxfehler...klingt zwar ähnlich, sind aber 2 grundverschiedene dinge ;o)...
mal zum besseren verständnis:
stell dir arrays am besten als koordinatensystem vor. hast du nur eine dimension, dann liegen alle werte auf der x-achse und du erreichst jeweils einen wert, indem du seine position auf der x-achse angibst. als beispiel folgendes array:
$a=array(a,b,c,d,e);
du hast jetzt auf der achse bei x=0 den wert a, bei x=1 den wert b usw...
hast du jetzt ein array mit 2 dimensionen:
$a=array(array(a0,a1,a2),array(b0,b1,b2),array(c0,c1,c2))
dann wird aus deiner reinen x-achse jetzt ein echtes koordinatensystem mit x-y-achsen.
unter x=0 hast du jetzt nicht mehr einen wert, sondern eine wertemenge, die a0,a1 und a2 enthält. gibst du jetzt zusätzlich zur position x=0 noch y=1 an, dann landest du bei dem wert a1.
dementsprechend funktioniert es auch mit 3 und mehrdimensionalen arrays 8außer daß das mit dem vorstellen ab 3 dimensionen für manche leute recht schwierig wird) ;o)...
jetzt zu deinem fehler:
=> ist ein zuweisungsoperator. er weist einem schlüssel (der position auf der achse als analogie) einen wert zu, daraus erklärt sich auch, daß deine zuweisung nicht existieren kann, da einem schlüssel nur ein wert zugewiesen werden kann, auch wenn dieser wert selbst eine wertemenge darstellt. also funktioniert dies immer nur als:
SCHLÜSSEL => WERT
du mußt also wen du mehrdimensional definieren willst einen der 2 nachfolgenden wege gehen:
$a=array(a=>array(1,2,3),b=>array(4,5,6))
oder du adressierst einzelne "speicherzellen" des array direkt:
$a[0][0][1]=a;
jetzt hat synonym zum beispiel des koordinatensystems die speicherzelle mit der adresse x=0, y=0, z=1 den wert a.
ich hoffe, das war einigermaßen verständlich.