ホームページ  >  記事  >  バックエンド開発  >  PHPのグローバル変数が無効な問題の詳しい解説_PHPチュートリアル

PHPのグローバル変数が無効な問題の詳しい解説_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:50:50977ブラウズ

globalで定義された変数はグローバル変数です。例えば、関数内で同じ変数名を定義するためにglobalを使用した場合、関数内の変数と関数外の同じ名前の変数がPHPでは同じ変数ではありません。外側としては、それらは単なる変数です。説明するためにいくつかの例を挙げてみましょう。

PHP 初心者の場合、global キーワードを使用すると、関数の外にある変数が関数内でグローバル化されているにもかかわらず、変数が正しく出力されない (つまり、グローバル変数が無効である) 場合があります。簡単で一般的な例を見てみましょう。

ここには、a.php と b.php の 2 つのページがあります。

b.php ページのコードは次のとおりです:

コードは次のとおりです コードをコピー

$site_name = 'CodePlayer';

関数sayHi(){
グローバル $site_name;
echo "こんにちは! $site_name へようこそ!";
}
?>

a.php ページのコードは次のとおりです:

コードは次のとおりです コードをコピー

関数 include_view_page(){
'b.php' を含めます;
sayHi(); }

include_view_page();

?>

上記の例は非常に単純ですが、a.php ページにアクセスしたときにようこそステートメントが正しく表示されることを願っています。ただし、残念ながら、ブラウザを使用して a.php ページにアクセスすると、次の出力が表示されます:

こんにちは!

言い換えると、 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 をグローバル変数として宣言することもできます。

コードは次のとおりです //b.php

関数内でグローバル変数を参照する例


まず次のコードを見てください:

コードをコピー
グローバル $site_name;
$site_name = 'CodePlayer';

関数sayHi(){

グローバル $site_name;

echo "こんにちは! $site_name へようこそ!";
}
?>

出力結果は以下の通りです:
コードは次のとおりです コードをコピー

$var1 = "#####"; $var2 = "&&&&&";

関数 global_references($use_globals)

{
グローバル $var1、$var2
if (!$use_globals) {
$var2 =&$var1 //1
;

} 他 {

$GLOBALS["var2"] =&$var1
;

}

}

global_references(false); echo "var2 は '$var2'
に設定されています

グローバル参照(true); echo "var2 は '$var2'
に設定されています
?>


var2 は「&&&&&」に設定されています

var2 は「#####」に設定されています

上記のコードで表示されます:
$var2 =&$var1 //1

関数内でのみ表示されます。

そして
$GLOBALS["var2"] =&$var1
; 世界中で見ることができます。


http://www.bkjia.com/PHPjc/632616.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/632616.html技術記事 globalで定義された変数はグローバル変数です。例えば、関数内の変数と関数外の同名の変数がPHPでは同じ変数ではない場合、関数内でglobalを使って定義すると…
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。