ホームページ  >  記事  >  バックエンド開発  >  PHP関数のローカル変数とグローバル変数の違い

PHP関数のローカル変数とグローバル変数の違い

伊谢尔伦
伊谢尔伦オリジナル
2017-05-09 10:44:163674ブラウズ

プログラム内で定義された変数はローカル変数と呼ばれ、プログラム内でのみ使用され、プログラムが終了すると消滅します。プログラムの外で定義された変数はグローバル変数と呼ばれ、プログラムから呼び出すことができますが、プログラムが終了しても消えることはありません。前の章では、PHP 関数のカスタム関数のローカル変数カスタム関数のグローバル変数をそれぞれ紹介しました。関数を定義します。この関数の変数は、この関数内でのみ使用できます。この関数を呼び出すと、この値が関数内で出力されます。はローカル変数です。グローバル変数は関数の外部で定義される変数であり、その有効範囲は定義点からファイルの終わりまで拡張されます。

PHPでは関数は別個のプログラムスライスとして扱われるため、ローカル変数に同じ変数が定義されていてグローバル変数が存在しない場合でも、ローカル変数が上書きされます。

以下はそれらの違いを示す例です:

<?php
//局部变量测试
$s1= "out s1"; //全局变量
function say(){
 $s1 = "in s1"; //局部变量
 echo "say():$s1";
}
say(); //输出局部变量: in s1
echo "<br/>";
echo "function out:$s1"; ////输出全局变量:out s1
//static变量测试
function count1(){
 $num = 0;
 $num++;
 echo $num." ";
}
function count2(){
 static $num = 0;
 $num++;
 echo $num." ";
}
for($i=0; $i<10; $i++){
 count1(); //11 1 1 1 1 1 1 1 1 1
}
echo "<br/>";
for($i=0; $i<10; $i++){
 count2(); //1 2 3 4 5 6 7 8 9 10
}
echo "<br/>";
//全局变量在函数中运用,加global
$a="php";
$b = "java";
function show(){
 echo $a; // 无输出
 global $b;
 echo $b; //定义global,输出java
}
show();
?>

ローカル変数とグローバル変数の違いの説明:

1. ローカル変数は内部変数にアクセスでき、関数内で結果を出力することはできません。関数外でアクセスされた場合 関数内の変数であるため、結果を出力することはできません。変数値を関数外で呼び出す必要がある場合は、後続の処理のためにその値を return 命令を通じてメイン プログラム ブロックに戻す必要があります。

2. PHP では、関数は別個のプログラム コードの断片としてみなされるため、ローカル変数はグローバル変数の可視性をオーバーライドするため、関数内でグローバル変数を直接呼び出すことはできません。関数でグローバル変数を使用する場合は、キーワードを使用してターゲット変数を定義する必要があります。このグローバル変数のキーワードは「global」です。キーワード「global」を使用すると、グローバル データを関数のローカル スコープにインポートできます。関数。この変数がグローバル変数であることを関数本体に伝えます。

3. PHP の変数スコープのもう 1 つの重要な機能は、静的変数です。静的変数はローカル関数スコープ内にのみ存在し、プログラムの実行がこのスコープを離れるときに一度だけ初期化され、その値は消えず、最後の実行の結果が使用されます。上記の例では、静的変数が使用されている場合と使用されていない場合をそれぞれ注意深く比較できます。

【おすすめ関連チュートリアル】

1.「php.cn Dugu Jiijian (4) - PHPビデオチュートリアル

2. PHPプログラミングの入門からマスターまでの完全なビデオチュートリアルセット

3. . php実践的なビデオチュートリアル

以上がPHP関数のローカル変数とグローバル変数の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。