無法在函數內存取全域變數
此腳本出現了無法在 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中文網其他相關文章!