PHP のすべての変数にはスコープがあり、これは変数 (およびその値) にアクセスできる領域です。
#まず、変数のスコープは変数が存在するページです。したがって、$var を定義すると、ページの残りの部分は $var にアクセスできますが、他のページは通常 (特別な変数が使用されない限り) $var にアクセスできません。 (推奨学習: 初心者からマスターまでの PHP プログラミング )
インクルードされたファイルは元の (インクルードされた) スクリプトの一部であるかのように動作するため、 include() 行の前に定義された変数は次のユーザーに利用可能です。含まれているファイル。さらに、インクルード ファイル内で定義された変数は、include() 行以降の親 (インクルード) スクリプトで使用できます。
これらすべては、独自に定義した関数を使用すると、それほど明白ではなくなります。これらの関数には独自のスコープがあります。つまり、関数内で使用される変数は関数の外では使用できず、関数の外で定義された変数は関数内では使用できません。このため、関数内の変数は関数の外側の変数と同じ名前を持つことができますが、それでも値が異なる完全に異なる変数になります。ほとんどの若手プログラマーにとって、これはわかりにくい概念です。
関数内の変数のスコープを変更するには、global ステートメントを使用できます。
<?php function function_name() { global $var; } $var = 20; function_name(); // Function call. ?>
この例では、関数内の $var は関数外の $var と同じになります。これは、変数 $var の値がすでに 20 であり、この値が関数内で変更されると、関数外の $var の値も変更されることを意味します。
変数スコープを回避するもう 1 つの方法は、スーパーグローバル変数 ($_GET、$_POST、$_REQUEST など) を使用することです。これらの変数は関数内で自動的にアクセスできます (したがって、これらはスーパーグローバル変数です)。 $GLOBALS 配列に要素を追加して、関数内で使用できるようにすることもできます。
言い換えれば、関数内でグローバル変数を使用しないことが最善です。関数を設計するときは、必要に応じてすべての値をパラメータとして受け入れ、必要に応じて任意の値を返すようにする必要があります。関数内でグローバル変数に依存すると、コンテキスト依存性が高まるため、有用性が低くなります。
一度宣言すると、定数はグローバルに表示されます。つまり、関数の内部と外部で使用できますが、これはページに含まれる PHP スクリプト ( include と include_once) ですが、他のページでは使用できません。
以上がPHP定数のスコープの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。