Ich habe zwei Funktionen, die ich verwende, um Schrägstriche aus einem tief verschachtelten Objekt / Array-Kombinationsfeld hinzuzufügen oder zu entfernen. Die erste "Ebene" des Arrays ist immer ein Objekt, aber einige seiner Eigenschaften können Arrays oder Objekte sein.
Hier sind meine zwei Funktionen:
%Vor%So genannt werden:
%Vor%Die Funktion entfernt jedoch die Schrägstriche nicht vom verschachtelten Array. Das in die Funktion übergebene Objekt ist wie folgt:
%Vor%Was habe ich falsch gemacht? Irgendwo entlang der Linie fehlt eine Referenz ...
foreach
verwendet eine Kopie des Arrays / Objekts und nicht das Array / Objekt selbst:
Hinweis: Wenn das Array nicht auf verweist,
foreach
arbeitet mit einer Kopie des angegebenen Arrays und nicht mit dem Array selbst.foreach
hat einige Nebenwirkungen auf den Array-Zeiger. Verlassen Sie sich nicht auf den Array-Zeiger während oder nach demforeach
, ohne ihn zurückzusetzen.
Verwenden Sie also eine Referenz:
%Vor% Oder verwenden Sie das Array-Element / die Objekteigenschaft selbst wie Kuroki Kaze, indem Sie $arr[$key]
anstelle des kopierten Wertes $field
verwenden.
foreach
erstellt eine Kopie des Wertes, nehme ich an.
Versuchen Sie es mit objSlash( $arr[$key], $add )
intad von objSlash( $field, $add )
in foreach
.
Tags und Links php recursion pass-by-reference