今日、私はPHPを学び始めました。そして、さまざまな変数をテストするための最初のPHPファイルを作成しました。次のように私のファイルを見ることができます。
<?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";
?>
ブラウザでこのファイルを実行すると、次のエラーが見つかりました。
Notice:未定義の変数:19行目の/opt/lampp/htdocs/anand/php/index.phpのx
Notice:未定義変数:29行目の/opt/lampp/htdocs/anand/php/index.phpのy
誰かがそれに関する問題を解決するのを手伝ってくれますか?
回答:
回答№1は5最初のエラー($x
未定義)は、デフォルトではグローバルが関数にインポートされないためです(「スーパーグローバル」とは異なります)。
グローバル変数を参照していることを関数に伝える必要があります $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";
}
そうしないと、PHPは、同じ名前のローカル変数でグローバル変数をシャドウイングしているかどうかを判断できません。
2番目のエラー($y
は未定義です)、ローカルスコープがまさにそれ、ローカルだからです。それの全体的なポイントは $y
関数から「リーク」しません。もちろんアクセスできません $y
コードの後半で、それが定義されている関数の外側。可能であれば、グローバルと変わりません。
回答№2については2
$ xをグローバルのように設定します
global $x;
またはこれを試してください
<?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";
?>
回答№3の場合は1
コードは期待どおりに動作しますが、スクリプト全体で両方の変数を使用する場合は、これを使用します
<?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";
?>
回答№4の場合は1
<?php
$a = 1; /* global scope */
function test()
{
echo $a; /* reference to local scope variable */
}
test();
?>
明示的に宣言しない限り、変数$ aはグローバル変数の値にアクセスできないため、最初のエラーが発生します。 global $a
関数の中で。
例#1グローバルの使用
<?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;
?>
そして、あなたが得る最後のエラー $ y 関数内で定義されます mytest()
そのため、その範囲はその機能のみに制限されます。
詳細な説明についてはこちらをお読みください http://php.net/manual/en/language.variables.scope.php
回答№5の場合は1
変数を使用する2つのケースがあります 世界的に:
- その変数の単一のコピーを使用して変更するどこからでも、つまり、関数内または外部から、つまりグローバルスコープ内からの変更。その場合、次の形式の許可された関数セットで宣言が必要です。
global $x;
. - 個々の関数にローカル変数が必要な場合 同じ識別子 グローバル変数に使用(つまり、すべての関数の外部の変数);その場合、同じ名前の変数が2つあります。つまり、その関数に対して1つのローカル変数と1つのグローバル変数があります。次に、使用する必要があります スーパーグローバル 変数
$GLOBALS
つまり、すべてのグローバル変数の配列。私は個人的にこのアプローチを好んで効率的なコードを作成しています。
以下は、2つのコードです
code1(グローバル宣言を使用)
<?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($ 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";
?>
ために 参照
答え№6の場合は0
あなたはPHPで変数の範囲を学ぶ必要があります
http://php.net/manual/en/language.variables.scope.php
あなたのコードでは$ xはグローバルなものなので、関数内でその変数にアクセスするには グローバル$ x;ある関数の始めに
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";
}
$ yの場合、isset($ y)をチェックしてその出力をスキップするか、グローバルスコープでデフォルト値を割り当てます。
回答№7は0
PHPのグローバル変数は、関数内でグローバルに宣言されなければなりません。
function myTest()
{
$y=10; // local scope
global $x;
.....
}
関数内で$ x globalを宣言することにより、変数のグローバルバージョンを参照します