wake-up-neo.net

Wie behebe ich Undefinierte Variablen Fehler in PHP?

Heute habe ich angefangen, PHP zu lernen. Und ich habe meine erste PHP -Datei erstellt, um verschiedene Variablen zu testen. Sie können meine Datei wie folgt sehen.

<?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";
?>

Ich habe folgenden Fehler gefunden, als ich diese Datei im Browser ausgeführt habe.

Hinweis: Undefinierte Variable: x in /opt/lampp/htdocs/anand/php/index.php in Zeile 19

Hinweis: Undefinierte Variable: y in /opt/lampp/htdocs/anand/php/index.php in Zeile 29

Kann mir jemand helfen, das Problem zu beheben?

4
Anand Mistry

Der erste Fehler ($x ist undefiniert) besteht darin, dass Globals nicht standardmäßig in Funktionen importiert werden (im Gegensatz zu "Super-Globals").

Sie müssen Ihrer Funktion mitteilen, dass Sie auf die globale Variable $x verweisen:

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";
}

Andernfalls kann PHP nicht erkennen, ob Sie die globale Variable mit einer lokalen Variablen mit demselben Namen beschatten.

Der zweite Fehler ($y ist undefiniert) besteht darin, dass der lokale Bereich genau der lokale Bereich ist. Der springende Punkt dabei ist, dass $y nicht aus der Funktion "ausläuft". Natürlich können Sie später in Ihrem Code nicht auf $y zugreifen, außerhalb der Funktion, in der er definiert ist. Wenn Sie könnten, wäre es nicht anders als ein globales.

6
meagar

setze $ x als global wie

global $x;

oder versuchen Sie es

<?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";
?>
2

Der Code verhält sich wie erwartet, aber wenn Sie beide Variablen im gesamten Skript verwenden möchten, verwenden Sie dies

<?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";
?>
1
<?php
$a = 1; /* global scope */ 

function test()
{ 
    echo $a; /* reference to local scope variable */ 
} 

test();
?>

sie erhalten den ersten Fehler, weil die Variable $ a nicht auf den Wert der globalen Variablen zugreifen kann, es sei denn, Sie deklarieren global $a explizit in der Funktion.

Beispiel # 1 Using 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;
?>

Und der letzte Fehler, den Sie erhalten, weil $ y in der Funktion mytest() definiert ist, sodass der Gültigkeitsbereich nur auf diese Funktion beschränkt ist.

Für eine detaillierte Erklärung lesen Sie hier http://php.net/manual/en/language.variables.scope.php

1
R R

Es gibt 2 Fälle, in denen eine Variable global verwendet wird:

  1. Verwenden Sie eine einzelne Kopie dieser Variablen und ändern Sie sie von einem beliebigen Ort, d. H. Innerhalb einer Funktion oder außerhalb, d. H. Im globalen Bereich. In diesem Fall benötigen Sie eine Deklaration im erlaubten Funktionsumfang in der Formglobal $x;.
  2. Falls Sie lokale Variablen für einzelne Funktionen mit dem selben Bezeichner benötigen, der für die globale Variable verwendet wird (d. H. Variablen außerhalb aller Funktionen); In diesem Fall haben Sie zwei Variablen mit demselben Namen, d. h. eine lokale und eine globale für diese Funktion. Dann müssen Sie ein superglobal variable$GLOBALSd. H. Ein Array aller globalen Variablen verwenden. Ich persönlich bevorzuge diesen Ansatz, um einen effizienten Code zu erstellen.

Das Folgende ist der Code für die beiden

code1 (unter Verwendung der globalen Deklaration)

<?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";
?>

code2 (unter Verwendung des Arrays $ GLOBALS [])

<?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";
?>

FürREFERENZ

1
Rajesh Paul

In PHP müssen globale Variablen innerhalb einer Funktion als global deklariert werden, wenn sie in dieser Funktion verwendet werden sollen.

function myTest()
{
$y=10; // local scope
global $x;
.....
}

Wenn Sie in der Funktion $ x global deklarieren, wird auf die globale Version der Variablen verwiesen

0

sie müssen den Umfang einer Variablen in PHP lernen

http://php.net/manual/en/language.variables.scope.php

In Ihrem Code ist $ x global. Verwenden Sie also global $ x, um auf diese Variable in der Funktion zuzugreifen. am Anfang der Funktion ist das

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";
}

für $ y überspringen Sie diese Ausgabe, indem Sie isset ($ y) markieren, oder weisen Sie einen Standardwert im globalen Bereich zu

0
gvgvgvijayan