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 № 1Pierwszy 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:
- 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;
. - 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