/ / Come posso correggere un errore variabile non definito in PHP? - php, gestione degli errori, errori del compilatore, errore di sintassi, errore di runtime

Come posso correggere l'errore di variabile non definita in PHP? - php, gestione degli errori, errori del compilatore, sintassi-errore, errore di runtime

Oggi ho iniziato a studiare PHP. E ho creato il mio primo file PHP per testare diverse variabili. Puoi vedere il mio file come segue.

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

Ho trovato il seguente errore quando ho eseguito questo file nel browser.

Avviso: variabile non definita: x in /opt/lampp/htdocs/anand/php/index.php alla riga 19

Avviso: variabile non definita: y in /opt/lampp/htdocs/anand/php/index.php alla riga 29

Qualcuno può aiutarmi a risolvere il problema al riguardo?

risposte:

5 per risposta № 1

Il primo errore ($x non è definito) perché i globuli non vengono importati nelle funzioni per impostazione predefinita (al contrario dei "super globali", che sono).

Devi dire alla tua funzione che stai facendo riferimento alla variabile 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";
}

Altrimenti, PHP non può dire se stai ombreggiando la variabile globale con una variabile locale con lo stesso nome.

Il secondo errore ($y non è definito), perché l'ambito locale è proprio questo, locale. Il punto è tutto ciò $y non "esce" dalla funzione. Naturalmente non è possibile accedervi $y più avanti nel codice, al di fuori della funzione in cui è definito. Se potessi, non sarebbe diverso da un globale.


2 per risposta № 2

imposta $ x come globale

global $x;

o prova questo

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

1 per risposta № 3

Il codice si comporta come previsto, ma se si desidera utilizzare entrambe le variabili nello script, utilizzare questo

<?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 per risposta № 4
<?php
$a = 1; /* global scope */

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

test();
?>

stai ricevendo il primo errore perché la variabile $ a non può accedere al valore della variabile globale se non dichiari esplicitamente global $a all'interno della funzione.

Esempio n. 1 Uso globale

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

E l'ultimo errore che stai ricevendo perché $ y è definito all'interno della funzione mytest() quindi il suo scopo sarà limitato a quella sola funzione.

Per una spiegazione dettagliata Leggi qui http://php.net/manual/en/language.variables.scope.php


1 per risposta № 5

Esistono 2 casi di utilizzo di una variabile globalmente:

  1. Usando una singola copia di quella variabile e modificada qualsiasi luogo, ad esempio una modifica all'interno di una funzione o all'esterno, cioè nell'ambito globale. In tal caso, è necessario una dichiarazione nel set di funzioni consentito nel modulo global $x;.
  2. Nel caso in cui siano necessarie variabili locali per singole funzioni con il stesso identificatore utilizzato per la variabile globale (ovvero variabili al di fuori di tutte le funzioni); in quel caso hai due variabili con lo stesso nome, cioè una locale e una globale per quella funzione. Quindi è necessario utilizzare a superglobale variabile $GLOBALS vale a dire una matrice di tutte le variabili globali. Personalmente preferisco questo approccio per creare un codice efficiente;

Di seguito è riportato il codice per i due

codice1 (usando la dichiarazione globale)

<?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 (usando l'array $ 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";
?>

Per RIFERIMENTO


0 per risposta № 6

devi imparare l'ambito di una variabile in php

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

Nel tuo codice $ x è globale quindi per accedere a quella variabile all'interno della funzione usa $ x globale; all'inizio della funzione che è

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

per $ y salti quell'output controllando isset ($ y) oppure assegna un valore predefinito nell'ambito globale


0 per risposta № 7

In PHP le variabili globali devono essere dichiarate globali all'interno di una funzione se devono essere utilizzate in quella funzione.

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

Dichiarando $ x global all'interno della funzione si farà riferimento alla versione globale della variabile