无法在函数内访问全局变量
此脚本出现了无法在 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中文网其他相关文章!