Impossible d'accéder à la variable globale dans la fonction
Ce script présente un problème où la variable globale $sxml n'est pas accessible dans foo() fonction :
$sxml = new SimpleXMLElement('<somexml/>'); function foo(){ $child = $sxml->addChild('child'); } foo();
Pourquoi cela Se produit
Les variables déclarées dans la portée globale ne peuvent pas être directement référencées dans les fonctions à moins qu'elles ne soient explicitement définies comme globales dans la fonction ou passées en tant qu'arguments.
Solutions
Pour accéder à $sxml dans foo(), il existe plusieurs options :
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();
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!