ホームページ >バックエンド開発 >PHPチュートリアル >PHPにおけるグローバルと¥GLOBALS[]の違い
PHP におけるグローバルと¥GLOBALS[] の違い
PHP プログラムを開発する際、グローバルデータを使用することは避けられません。
グローバル変数 もその 1 つであり、この考え方には依然として議論の余地があります。不適切に使用すると、構造がわかりにくくなり、デバッグが難しくなります。はさらに難しいですが、その便利さは否定できません。これが、PHP が グローバル変数 global を使用する理由です。…
今日、php グローバル変数が機能しないという問題に遭遇しました。
最初に簡単なコードを示します:
1 |
<?php |
2 |
$a = 0 ; |
3 |
function Test() |
4 |
{ |
5 |
$a =1; |
6 |
} |
7 |
Test(); |
8 |
echo $a ; |
9 |
?> |
上記のコードの出力は 0 です。これは、関数本体 Test の $a 変数がデフォルトでローカル変数に設定されており、$a のスコープが Test 内にあるためです。コードを次のように変更します。
01 |
<?php |
02 |
$a = 0 ; |
03 |
function Test() |
04 |
{ |
05 |
global
$a ; //申明函数体Test内使用的$a变量为global全局变量 |
06 |
$a
=1; |
07 |
} |
08 |
Test(); |
09 |
echo $a ; |
10 |
?> |
関数本体 Test で使用される $a 変数をグローバル グローバル変数として宣言すると、$a はグローバル効果を持つため、出力は 1 になります。
上記の例は、グローバル変数の基本的な知識にすぎません。より複雑な変数を見てみましょう:
01 |
//A.php 文件 |
02 |
03 |
<?php |
04 |
function Test_Global() |
05 |
{ |
06 |
include 'B.php' ; |
07 |
Test(); |
08 |
} |
09 |
10 |
$a = 0 ; |
11 |
Test_Global(); |
12 |
echo $a ; |
13 |
?> |
14 |
15 |
//B.php 文件 |
16 |
17 |
<?php |
18 |
function Test() |
19 |
{ |
20 |
global
$a ; //申明函数体Sum内使用的$a变量为global全局变量 |
21 |
$a
=1; |
22 |
} |
23 |
?> |
出力が 0 なのはなぜですか?!!
ユーザー定義関数では、ローカル関数スコープが導入されます。 関数内で使用される変数は、デフォルトでローカル関数スコープに制限されます (include および require によってインポートされたファイル内の変数を含む)!
説明: A.php ファイル内の Test_Global は、定義されたサードパーティ関数です。この関数は、include を使用して、B.php ファイル内の $a のグローバル グローバル変数をインポートします。そのため、$a は、 Test_Global ローカル 関数スコープ内なので、B.php ファイル内の $a のスコープは、A.php 全体に影響を与えるのではなく、Test_Global 内にあります....
01 |
//A.php 文件
|
02 |
03 |
<?php |
04 |
function Test_Global() |
05 |
{ |
06 |
Test(); |
07 |
} |
08 |
include 'B.php' ;
//将include 从局部Test_Global函数中移出 |
09 |
$a = 0 ; |
10 |
Test_Global(); |
11 |
echo $a ; |
12 |
?> |
13 |
14 |
//B.php 文件 |
15 |
16 |
<?php |
17 |
function Test() |
18 |
{ |
19 |
global
$a ; |
20 |
$a
=1; |
21 |
} |
22 |
?> |
1 |
//A.php 文件
|
01 |
<?php |
02 |
include 'B.php' ; |
03 |
$a =0; |
04 |
Set_Global( $a ); |
05 |
echo $a ; |
06 |
?> |
07 |
08 |
//B.php 文件 |
09 |
10 |
<?php |
11 |
function Set_Global(& $var ) |
12 |
{ |
13 |
$var =1; |
14 |
} |
15 |
?> |