関数内でグローバル変数にアクセスできません
このスクリプトでは、foo() 内でグローバル変数 $sxml にアクセスできないという問題が発生します。関数:
$sxml = new SimpleXMLElement('<somexml/>'); function foo(){ $child = $sxml->addChild('child'); } foo();
なぜこれなのか発生
グローバル スコープ内で宣言された変数は、関数内でグローバルとして明示的に定義されているか、引数として渡されていない限り、関数内で直接参照できません。
解決策
foo() 内で $sxml にアクセスするには、いくつかの方法があります。オプション:
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();
以上がPHP 関数内でグローバル変数にアクセスできないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。