您必须将其传递给函数:
$sxml = new SimpleXMLElement('');
function foo($sxml){
$child = $sxml->addChild('child');
}
foo($sxml);
?>
或将其声明为global:
$sxml = new SimpleXMLElement('');
function foo(){
global $sxml;
$child = $sxml->addChild('child');
}
foo();
?>
如果变量不是全局变量,而是在外部函数中定义的,则第一个选项(作为参数传递)的作用相同:
function bar() {
$sxml = new SimpleXMLElement('');
function foo($sxml) {
$child = $sxml->addChild('child');
}
foo($sxml);
}
bar();
?>
或者,通过在子句中声明变量来创建闭包use。
function bar() {
$sxml = new SimpleXMLElement('');
function foo() use(&$xml) {
$child = $sxml->addChild('child');
}
foo();
}
bar();
?>