次のコードは警告を生成します。
<?php
$GLOBALS['foo'] = "Example content<BR><BR>";
echo $foo; // that works!
Test();
function Test()
{
echo $foo; // that doesn't work!
}
?>
警告は次のとおりです。
Notice: Undefined variable: foo
どうして ?
次のコードは警告を生成します。
<?php
$GLOBALS['foo'] = "Example content<BR><BR>";
echo $foo; // that works!
Test();
function Test()
{
echo $foo; // that doesn't work!
}
?>
警告は次のとおりです。
Notice: Undefined variable: foo
どうして ?
関数内で$foo
は、として呼び出す$GLOBALS['foo']
か、を使用しない限り、範囲外ですglobal $foo
。でグローバルを定義すると$GLOBALS
、読みやすさが向上しますが、すべてのスコープで使用するために変数名が自動的に予約されるわけではありません。それを利用するには、下位スコープ内でグローバル変数を明示的に呼び出す必要があります。
function Test()
{
echo $GLOBALS['foo'];
// Or less clear, use the global keyword
global $foo;
echo $foo;
}
同じ関数にローカルとグローバルの両方を含めることも可能$foo
です(ただし、まったくお勧めしません)。
$GLOBALS['foo'] = "foo! :)";
function getFoo()
{
$foo = "boo :(";
echo $GLOBALS['foo'] . "\n"; // Global $foo
echo $foo; // Local scope $foo since it has no global keyword
}
getFoo();
// foo! :)
// boo :(
その他の例については、変数スコープに関するPHPのドキュメントと$GLOBALS
ドキュメントを確認してください。
常に$GLOBALS配列を介して参照する必要があります。完全な説明的な答えを得るために変数スコープについて読んでください。
<?php
$GLOBALS['foo'] = "Example content<BR><BR>";
echo $foo; // that works!
Test();
function Test()
{
echo $GLOBALS['foo']; // that doesn't work!
}
?>
コードを次のように変更できます。
function Test() {
global $foo;
echo $GLOBALS['foo'];
echo $foo;
}
PHP関数からアクセスするグローバル変数を宣言する必要があります。参照: http: //php.net/manual/en/language.variables.scope.php