Maison > développement back-end > tutoriel php > Pourquoi ne puis-je pas accéder à une variable globale dans une fonction PHP ?

Pourquoi ne puis-je pas accéder à une variable globale dans une fonction PHP ?

Mary-Kate Olsen
Libérer: 2024-12-10 15:57:10
original
728 Les gens l'ont consulté

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

Impossible d'accéder à la variable globale dans la fonction

Ce script présente un problème où la variable globale $sxml n'est pas accessible dans foo() fonction :

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

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

foo();
Copier après la connexion

Pourquoi cela Se produit

Les variables déclarées dans la portée globale ne peuvent pas être directement référencées dans les fonctions à moins qu'elles ne soient explicitement définies comme globales dans la fonction ou passées en tant qu'arguments.

Solutions

Pour accéder à $sxml dans foo(), il existe plusieurs options :

  1. Passer comme argument :
function foo($sxml){
    $child = $sxml->addChild('child');
}
foo($sxml);
Copier après la connexion
  1. Déclarer comme global :
function foo(){
    global $sxml;
    $child = $sxml->addChild('child');
}
foo();
Copier après la connexion
  1. Créer un Fermeture :
function bar() {
    $sxml = new SimpleXMLElement('<somexml/>');
    $foo = function() use(&amp;$xml) {
        $child = $sxml->addChild('child');
    };
    $foo();
}
bar();
Copier après la connexion
  1. Passer à la fonction à l'aide d'une fonction imbriquée :
function bar() {
    $sxml = new SimpleXMLElement('<somexml/>');
    function foo() {
        $child = $sxml->addChild('child');
    }
    foo();
}
bar();
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal