/ / Jak naprawić błąd zmiennej niezdefiniowanej w PHP? - php, obsługa błędów, błędy kompilatora, błąd składni, błąd wykonania

Jak naprawić błąd zmiennej niezdefiniowanej w PHP? - php, obsługa błędów, błędy kompilatora, błąd składni, błąd wykonania

Dzisiaj zacząłem uczyć się PHP. I stworzyłem mój pierwszy plik PHP do testowania różnych zmiennych. Możesz zobaczyć mój plik w następujący sposób.

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

Znalazłem następujący błąd, gdy uruchomiłem ten plik w przeglądarce.

Uwaga: Niezdefiniowana zmienna: x w /opt/lampp/htdocs/anand/php/index.php na linii 19

Uwaga: Niezdefiniowana zmienna: y w /opt/lampp/htdocs/anand/php/index.php w linii 29

Czy ktokolwiek może mi pomóc rozwiązać problem dotyczący tego?

Odpowiedzi:

5 dla odpowiedzi № 1

Pierwszy błąd ($x jest niezdefiniowana), ponieważ globale nie są domyślnie importowane do funkcji (w przeciwieństwie do "super globals", które są).

Musisz powiedzieć swojej funkcji, że odwołujesz się do zmiennej globalnej $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";
}

W przeciwnym razie PHP nie może stwierdzić, czy śledzimy zmienną globalną za pomocą zmiennej lokalnej o tej samej nazwie.

Drugi błąd ($y jest niezdefiniowany), ponieważ zasięg lokalny jest właśnie taki, lokalny. Cała ta sprawa jest taka $y nie "przecieka" z funkcji. Oczywiście nie możesz uzyskać dostępu $y później w kodzie, poza funkcją, w której jest zdefiniowany. Gdybyś mógł, nie różniłby się od globalnego.


2 dla odpowiedzi nr 2

ustaw $ x jako globalny

global $x;

lub spróbuj tego

<?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 dla odpowiedzi nr 3

Kod zachowuje się zgodnie z oczekiwaniami, ale jeśli chcesz użyć obu zmiennych w skrypcie, użyj tego

<?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 dla odpowiedzi nr 4
<?php
$a = 1; /* global scope */

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

test();
?>

otrzymujesz pierwszy błąd, ponieważ zmienna $ a cant nie ma dostępu do wartości zmiennej globalnej, chyba że jawnie zadeklarujesz global $a wewnątrz funkcji.

Przykład # 1 Korzystanie z globalnego

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

I ostatni błąd, który otrzymujesz, ponieważ $ y jest zdefiniowany w funkcji mytest() więc jego zakres będzie ograniczony tylko do tej funkcji.

Aby uzyskać szczegółowe wyjaśnienie, przeczytaj tutaj http://php.net/manual/en/language.variables.scope.php


1 dla odpowiedzi nr 5

Istnieją 2 przypadki użycia zmiennej globalnie:

  1. Używając pojedynczej kopii tej zmiennej i zmodyfikujto z dowolnego miejsca, to znaczy z wewnątrz funkcji lub poza nią, tj. w zakresie globalnym. W takim przypadku potrzebujesz deklaracji w dozwolonym zestawie funkcji w formularzu global $x;.
  2. Jeśli potrzebujesz zmiennych lokalnych dla poszczególnych funkcji z ten sam identyfikator stosowane dla zmiennej globalnej (to jest zmiennych poza wszystkimi funkcjami); w takim przypadku masz dwie zmienne o tej samej nazwie, tj. jedną lokalną i jedną globalną dla tej funkcji. Następnie musisz użyć a superglobalny zmienna $GLOBALS tj. tablica wszystkich zmiennych globalnych. Osobiście wolę takie podejście, aby stworzyć skuteczny kod;

Poniżej znajduje się kod dla dwóch

kod1 (z wykorzystaniem deklaracji globalnej)

<?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 (używając tablicy $ 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";
?>

Dla ODNIESIENIE


0 dla odpowiedzi № 6

musisz nauczyć się zakresu zmiennej w php

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

W twoim kodzie $ x jest globalnym, więc aby uzyskać dostęp do tej zmiennej wewnątrz funkcji użyj globalne $ x; na początku funkcji, która jest

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

dla $ y pomijasz to wyjście przez sprawdzenie isset ($ y) lub przypisanie wartości domyślnej w zasięgu globalnym


0 dla odpowiedzi № 7

W PHP zmienne globalne muszą być deklarowane globalnie wewnątrz funkcji, jeśli mają być używane w tej funkcji.

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

Deklaracja $ x global w funkcji będzie odnosić się do globalnej wersji zmiennej