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
Freigeben: 2024-12-10 15:57:10
Original
724 Leute haben es durchsucht

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();
Nach dem Login kopieren

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);
Nach dem Login kopieren
  1. Als global deklarieren:
function foo(){
    global $sxml;
    $child = $sxml->addChild('child');
}
foo();
Nach dem Login kopieren
  1. Erstellen Sie eine Abschluss:
function bar() {
    $sxml = new SimpleXMLElement('<somexml/>');
    $foo = function() use(&amp;$xml) {
        $child = $sxml->addChild('child');
    };
    $foo();
}
bar();
Nach dem Login kopieren
  1. Übergabe an Funktion mithilfe einer verschachtelten Funktion:
function bar() {
    $sxml = new SimpleXMLElement('<somexml/>');
    function foo() {
        $child = $sxml->addChild('child');
    }
    foo();
}
bar();
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage