Hi,
$e hast du ja schon richtig analysiert. Es ist ein normales Array, das immer kleiner wird.
$arr ist aber nur am Anfang die Referenz auf das ganze Array.
Nach dem ersten Durchlauf ist es dann die Referenz auf $arr['usr'], dann auf $arr['usr']['share'] und am Ende auf $arr['usr']['share']['include'].
$arr wird also auch immer kleiner.
Funktionieren tut das Ganze weil eben nur als Referenz übergeben wird. Das drüberliegende Objekt zeigt also drauf - unabhängig wie das Objekt noch weiter aufgebaut wird.
Meine Aktion bei Abbruch ist dann nicht weiter abzutauchen.
Die Datei "a.h" wird also nicht mehr als Schlüssel verwendet (kein $arr['usr']['share']['include']['a.h']) sondern als Wert. Die Zuweisung sehe also im Klartext so aus:
|
PHP Quellcode
|
1
|
$arr['usr']['share']['include'][] = 'a.h';
|
Wenn jetzt ein Pfad komplett drinne ist, beginnt das Ganze wieder von vorne.
Manche Pfade existieren schon und werden einfach erweitert. Andere werden neu angelegt, ...