Tom: Multidimensionales Array aus exploded String erstellen

Beitrag lesen

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

--
 ☻_
/▌
/ \ Nur selber lernen macht schlau
http://bikers-lodge.com