Heim >Backend-Entwicklung >PHP-Tutorial >Warum kann ich innerhalb einer PHP-Funktion nicht auf eine globale Variable zugreifen?

Warum kann ich innerhalb einer PHP-Funktion nicht auf eine globale Variable zugreifen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-10 15:57:10779Durchsuche

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

Zugriff auf globale Variable innerhalb der Funktion nicht möglich

Dieses Skript weist ein Problem auf, bei dem auf die globale Variable $sxml innerhalb von foo() nicht zugegriffen werden kann. Funktion:

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

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

foo();

Warum das? Tritt auf

Variablen, die im globalen Bereich deklariert wurden, können in Funktionen nicht direkt referenziert werden, es sei denn, sie werden innerhalb der Funktion explizit als global definiert oder als Argumente übergeben.

Lösungen

Um innerhalb von foo() auf $sxml zuzugreifen, gibt es mehrere Optionen:

  1. Als Argument übergeben:
function foo($sxml){
    $child = $sxml->addChild('child');
}
foo($sxml);
  1. Als global deklarieren:
function foo(){
    global $sxml;
    $child = $sxml->addChild('child');
}
foo();
  1. Erstellen Sie eine Abschluss:
function bar() {
    $sxml = new SimpleXMLElement('<somexml/>');
    $foo = function() use(&amp;$xml) {
        $child = $sxml->addChild('child');
    };
    $foo();
}
bar();
  1. Übergabe an Funktion mithilfe einer verschachtelten Funktion:
function bar() {
    $sxml = new SimpleXMLElement('<somexml/>');
    function foo() {
        $child = $sxml->addChild('child');
    }
    foo();
}
bar();

Das obige ist der detaillierte Inhalt vonWarum kann ich innerhalb einer PHP-Funktion nicht auf eine globale Variable zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn