globalで定義された変数はグローバル変数です。例えば、関数内で同じ変数名を定義するためにglobalを使用した場合、関数内の変数と関数外の同じ名前の変数がPHPでは同じ変数ではありません。外側としては、それらは単なる変数です。説明するためにいくつかの例を挙げてみましょう。
PHP 初心者の場合、global キーワードを使用すると、関数の外にある変数が関数内でグローバル化されているにもかかわらず、変数が正しく出力されない (つまり、グローバル変数が無効である) 場合があります。簡単で一般的な例を見てみましょう。
ここには、a.php と b.php の 2 つのページがあります。
b.php ページのコードは次のとおりです:
コードは次のとおりです | コードをコピー |
$site_name = 'CodePlayer'; 関数sayHi(){ |
a.php ページのコードは次のとおりです:
コードは次のとおりです | コードをコピー |
関数 include_view_page(){
?> |
こんにちは!
言い換えると、 include_view_page() 関数内でsayHi() 関数を呼び出すと、b.php ページのsayHi() 関数内のグローバル $site_name が正しく認識されず、有効になりません。これは一体どういうことなのでしょうか?
実際、b.php ページを include_view_page() 関数に含めると、b.php ページの変数 $site_name は include_view_page() 関数内のスコープに格納されるのと同じになります。ご存知のとおり、関数内の変数をグローバル化すると、実際には関数内のページのグローバル変数への参照が確立されます。この例では、$site_name 変数は a.php の include_view_page() 関数内のローカル変数にすぎないため、当然のことながら、関連する呼び出しを行うときに、正しい変数と変数値を取得することはできません。 。
PHP では、関数内にページを含めるという上記の問題に特に注意する必要があります。これにより、ページ内の変数のスコープが変更されます。この状況を回避するには、マルチレベルの include 呼び出しを減らし、関数内で include を使用しないようにする必要があります。さらに、b.php ページで $site_name をグローバル変数として宣言することもできます。
コードをコピー | |||||
グローバル $site_name; $site_name = 'CodePlayer'; 関数sayHi(){ グローバル $site_name;
echo "こんにちは! $site_name へようこそ!"; |
コードは次のとおりです | コードをコピー |
$var1 = "#####";
$var2 = "&&&&&";
{
$GLOBALS["var2"] =&$var1
} に設定されています
グローバル参照(true);
echo "var2 は '$var2' | 出力結果は以下の通りです:
var2 は「#####」に設定されています
上記のコードで表示されます:
$var2 =&$var1 //1
そして
$GLOBALS["var2"] =&$var1
;
世界中で見ることができます。