Zugriff auf globale Variable innerhalb der Funktion nicht möglich
Dieses Skript weist ein Problem auf, bei dem auf die globale Variable $sxml innerhalb von foo() nicht zugegriffen werden kann. Funktion:
$sxml = new SimpleXMLElement('<somexml/>'); function foo(){ $child = $sxml->addChild('child'); } foo();
Warum das? Tritt auf
Variablen, die im globalen Bereich deklariert wurden, können in Funktionen nicht direkt referenziert werden, es sei denn, sie werden innerhalb der Funktion explizit als global definiert oder als Argumente übergeben.
Lösungen
Um innerhalb von foo() auf $sxml zuzugreifen, gibt es mehrere Optionen:
function foo($sxml){ $child = $sxml->addChild('child'); } foo($sxml);
function foo(){ global $sxml; $child = $sxml->addChild('child'); } foo();
function bar() { $sxml = new SimpleXMLElement('<somexml/>'); $foo = function() use(&$xml) { $child = $sxml->addChild('child'); }; $foo(); } bar();
function bar() { $sxml = new SimpleXMLElement('<somexml/>'); function foo() { $child = $sxml->addChild('child'); } foo(); } bar();
Das obige ist der detaillierte Inhalt vonWarum kann ich innerhalb einer PHP-Funktion nicht auf eine globale Variable zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!