Hello Sven,
$_myList['first'] -> 'black';
kann man direkt nicht mehr machen
$_myList['first']['background']['value'] -> 'black';
da $_myList['first'] breits vom Typ String ist und damit nicht implizit überschreibbar.
Wenn $_myList['first'] allerdings auf false oder NULL zeigt, dann lässt PHP die Typüberschreibung zu Array zu.
Man kann auch direkt ein leeres Array zuweisen.
Das Problem ist aber ein anderes:
"abc/def" ist der Key "abc" mit Value "def".
"abc/def/ghi" ist ['abc']['def'] als Key-Kette - aber ['abc'] ist kein vorher leeres Array, sondern der Value "def".
Die Frage ist also: Wie ist so ein Fall definiert?
Das Problem geht übrigens nicht weg, wenn man den eigentlichen Value im String anders abspaltet:
"abc = 1"
"abc/def = 2"Hat dasselbe Problem: "abc" kann nicht gleichzeitig den Value 1 enthalten, und parallel das Array mit Key "def" sein. Da kommt man nur raus, wenn man in seinem Array mindestens noch einen Key "value" anlegt (und ausschließt, dass man selbst den Key "value" verwendet):
['abc']['value'] = 1
['abc']['def'] = array(...)
... oder die Elemente müssen eben selber auch einen Typ haben, den _wir_ hier aber nicht sehen können. So funktioniert das ja in rekursiven Verzeichnisschemata
Da haben die Elemente entweder den Typ 'data' (oder 'file', ...), oder sie sind vom Typ 'dir', oder, oder, ...
Das ist dann Definitionssache, welche davon dann auch nebeneinander existieren dürfen
F /var/www/web
D /var/www/web/example.org
PHP stellt diese Möglichkeit in seinen Arraystrukturen nicht zur Verfügung und verhindert effektiv, dass Fehler passieren.
Ich denke, dass Gunther da noch ein paar Informationen nachlegen muss, wenn es zur Lösung führen soll :-)
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg