グローバル変数と「グローバル」キーワード
PHP はデフォルトでいくつかの「スーパーグローバル」変数を定義しており、これらの変数は自動的にグローバル化され、$_GET や $_REQUEST など、 プログラム内のどこからでも呼び出すことができます。通常、これらの変数はデータまたはその他の外部データから取得されますが、これらの変数は基本的に書き込み可能ではないため、通常は使用しても問題は発生しません。 ただし、独自のグローバル変数を使用することもできます。キーワード「global」を使用すると、グローバル データを 関数のローカル スコープにインポートできます。 「変数の使用範囲」がわからない場合は、PHP マニュアル の関連する手順を参照してください。 「global」キーワードを使用したデモ例を次に示します:
<?php $my_var = 'Hello World'; test_global(); function test_global() { // Now in local scope // the $my_var variable doesn't exist // Produces error: "Undefined variable: my_var" echo $my_var; // Now let's important the variable global $my_var; // Works: echo $my_var; } ?>
上の例でわかるように、「global」キーワードはグローバル変数をインポートするために使用されます。うまく機能し、シンプルであるように見えますが、グローバル データを定義するために「global」キーワードを使用することをなぜ心配するのでしょうか?
業界に不慣れな方にグローバル変数の使用法を説明しましょう。この名詞の「グローバル」という 2 つの単語から、この変数がどこでも使用できることがわかります。まず例を見てみましょう。 : <?php
$a = 1;
$b = 2;
function Sum()
{
global $a, $b; //在里面声明为全局变量
$b = $a + $b;
}
Sum();
echo $b;
?>
<?PHP $w3sky = 1; $w3sky2 = 2; function Sum() { global $w3sky, $w3sky2;$w3sky2 = $w3sky + $w3sky2; }Sum(); echo $w3sky2; ?>
グローバル スコープ内の変数にアクセスする 2 番目の方法は、特別な PHP カスタム $GLOBALS 配列を使用することです。前の例
は次のように記述できます:
例 $GLOBALS を使用して global<?PHP $w3sky = 1; $w3sky2 = 2;function Sum() { $GLOBALS['w3sky'] = $GLOBALS['w3sky'] + $GLOBALS['w3sky2']; }Sum(); echo $w3sky2; ?>
。 $GLOBALS はスーパーグローバル変数であるため、$GLOBALS はグローバル スコープ内に存在します。次の例は、スーパー グローバル変数の使用方法を示しています。
スーパー グローバル変数とスコープの例を示す例<?PHP function test_global() { // 大多数的预定义变量并不 "super",它们需要用 'global' 关键字来使它们在函 数的本地区域中有效。 global $HTTP_POST_VARS;echo $HTTP_POST_VARS['name'];// Superglobals 在任何 范围内都有效,它们并不需要 'global' 声明。Superglobals 是在 PHP 4.1.0 引入的。 echo $_POST['name']; } ?>
global は、特に PHP がコードを実行する前にそれぞれに関連付けることができるいくつかの変数を提供するため便利です 以上がPHPのグローバルグローバル変数の使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。<?php
function SayMyABCs2()
{
global $count;
while($count<10)
{
print(chr(ord('A')+$count));
$count=$count+1;
}
print("<br>Now I know $count letters<br>");
}
$count=0;
SayMyABCs2();
$count=$count+1;
print("Now I've made $count function call(s).<br>");
SayMyABCs2();
$count=$count+1;
print("Now I've made $count function call(s).<br>");
?>
ABCDEFGHIJ //第一次循环依次打印10个大写字母
Now I know 10 letters
Now I've made 11 function call(s). //第二次由于条件大于10则不执行循环
Now I know 11 letters
Now I've made 12 function call(s).
というトラブルが解消されます