Aujourd'hui, j'ai commencé à apprendre le PHP. Et, j'ai créé mon premier fichier PHP pour tester différentes variables. Vous pouvez voir mon dossier comme suit.
<?php
$x=5; // global scope
function myTest()
{
$y=10; // local scope
echo "<p>Test variables inside the function:<p>";
echo "Variable x is: $x";
echo "<br>";
echo "Variable y is: $y";
}
myTest();
echo "<p>Test variables outside the function:<p>";
echo "Variable x is: $x";
echo "<br>";
echo "Variable y is: $y";
?>
J'ai trouvé l'erreur suivante lorsque j'ai exécuté ce fichier dans le navigateur.
Avis: Variable non définie: x dans /opt/lampp/htdocs/anand/php/index.php à la ligne 19
Remarque: Variable non définie: y dans /opt/lampp/htdocs/anand/php/index.php à la ligne 29
Quelqu'un peut-il m'aider à résoudre le problème le concernant?
La première erreur ($x
n'est pas défini) est due au fait que les globales ne sont pas importées par défaut dans les fonctions (par opposition aux "super globaux" qui sont).
Vous devez indiquer à votre fonction que vous référencez la variable globale $x
:
function myTest()
{
global $x; // $x refers to the global variable
$y=10; // local scope
echo "<p>Test variables inside the function:<p>";
echo "Variable x is: $x";
echo "<br>";
echo "Variable y is: $y";
}
Sinon, PHP ne peut pas dire si vous masquez la variable globale avec une variable locale du même nom.
La deuxième erreur ($y
n'est pas définie), c'est parce que la portée locale n'est que cela, locale. L'intérêt de ceci est que $y
ne "fuit" pas hors de la fonction. Bien sûr, vous ne pouvez pas accéder à $y
plus tard dans votre code, en dehors de la fonction dans laquelle il est défini. Si vous le pouviez, ce ne serait pas différent d'un global.
définir $ x comme global comme
global $x;
ou essayez ceci
<?php
$x=5; // global scope
function myTest($x)
{
$y=10; // local scope
echo "<p>Test variables inside the function:<p>";
echo "Variable x is: $x";
echo "<br>";
echo "Variable y is: $y";
}
myTest($x);
echo "<p>Test variables outside the function:<p>";
echo "Variable x is: $x";
echo "<br>";
echo "Variable y is: $y";
?>
Le code se comporte comme prévu, mais si vous souhaitez utiliser les deux variables du script, utilisez cette commande.
<?php
$x=5; // global scope
function myTest(){
global $x;
global $y;
$y=10;
echo "<p>Test variables inside the function:<p>";
echo "Variable x is: $x";
echo "<br>";
echo "Variable y is: $y";
}
myTest();
echo "<p>Test variables outside the function:<p>";
echo "Variable x is: $x";
echo "<br>";
echo "Variable y is: $y";
?>
<?php
$a = 1; /* global scope */
function test()
{
echo $a; /* reference to local scope variable */
}
test();
?>
vous obtenez la première erreur parce que la variable $ a ne peut pas accéder à la valeur de la variable globale sauf si vous déclarez explicitement global $a
dans la fonction.
Exemple # 1 Utilisation de global
<?php
$a = 1;
$b = 2;
function Sum()
{
global $a, $b; //if you want to access global variable if you have to use global keyword
$b = $a + $b;
}
Sum();
echo $b;
?>
Et la dernière erreur que vous obtenez parce que $ y est définie à l'intérieur de la fonction mytest()
, de sorte que son étendue sera limitée à cette fonction uniquement.
Pour une explication détaillée, lisez ici http://php.net/manual/fr/language.variables.scope.php
Il y a 2 cas d'utilisation d'une variable globalement:
global $x;
.$GLOBALS
c'est-à-dire un tableau de toutes les variables globales. Personnellement, je préfère cette approche pour créer un code efficace;Ce qui suit est le code pour les deux
<?php
$x=5; // global scope
function myTest()
{
$y=10; // local scope
global $x;
echo "<p>Test variables inside the function:<p>";
echo "Variable x in global scope is: $x";
echo "<br>";
echo "Variable y is: $y";
}
myTest();
echo "<p>Test variables outside the function:<p>";
echo "Variable x is: $x";
echo "<br>";
echo "Variable y is: $y";
?>
<?php
$x=5; // global scope
function myTest()
{
$y=10; // local scope
$x=23;
echo "<p>Test variables inside the function:<p>";
echo "Variable x in global scope is: ".$GLOBALS['x'];
echo "<br>Variable x in local scope is: $x";
echo "<br>";
echo "Variable y is: $y";
}
myTest();
echo "<p>Test variables outside the function:<p>";
echo "Variable x is: $x";
echo "<br>";
echo "Variable y is: $y";
?>
Dans PHP, les variables globales doivent être déclarées globales dans une fonction si elles doivent être utilisées dans cette fonction.
function myTest()
{
$y=10; // local scope
global $x;
.....
}
En déclarant que $ x global dans la fonction fera référence à la version globale de la variable
vous devez apprendre la portée d'une variable en php
http://php.net/manual/en/language.variables.scope.php
Dans votre code $ x est global, donc pour accéder à cette variable dans la fonction, utilisez Global $ x; au début de la fonction qui est
function myTest()
{
global $x;
$y=10; // local scope
echo "<p>Test variables inside the function:<p>";
echo "Variable x is: $x";
echo "<br>";
echo "Variable y is: $y";
}
pour $ y, vous ignorez cette sortie en cochant isset ($ y) ou vous affectez une valeur par défaut au niveau global