首頁 > 後端開發 > php教程 > 為什麼無法存取 PHP 函數內的全域變數?

為什麼無法存取 PHP 函數內的全域變數?

Mary-Kate Olsen
發布: 2024-12-10 15:57:10
原創
728 人瀏覽過

Why Can't I Access a Global Variable Inside a PHP Function?

無法在函數內存取全域變數

此腳本出現了無法在 foo() 內存取全域變數 $sxml的問題函數:

$sxml = new SimpleXMLElement('<somexml/>');

function foo(){
    $child = $sxml->addChild('child');
}

foo();
登入後複製

為什麼這樣發生

在全域範圍內宣告的變數不能直接在函數內引用,除非它們在函數內明確定義為全域變數或作為參數傳遞。

解決方案

要在 foo() 中訪問$sxml,有幾個選項:

  1. 作為參數傳遞:
function foo($sxml){
    $child = $sxml->addChild('child');
}
foo($sxml);
登入後複製
  1. 宣告為全域:
function foo(){
    global $sxml;
    $child = $sxml->addChild('child');
}
foo();
登入後複製
  1. 創建閉包:
function bar() {
    $sxml = new SimpleXMLElement('<somexml/>');
    $foo = function() use(&amp;$xml) {
        $child = $sxml->addChild('child');
    };
    $foo();
}
bar();
登入後複製
  1. 傳遞到使用嵌套函數功能:
function bar() {
    $sxml = new SimpleXMLElement('<somexml/>');
    function foo() {
        $child = $sxml->addChild('child');
    }
    foo();
}
bar();
登入後複製

以上是為什麼無法存取 PHP 函數內的全域變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板