ホームページ  >  記事  >  バックエンド開発  >  PHP の静的変数とグローバル変数の違いは何ですか?

PHP の静的変数とグローバル変数の違いは何ですか?

亚连
亚连オリジナル
2018-05-17 14:06:173514ブラウズ

● グローバル変数のスコープは定義時点からソースファイルの終わりまでであり、定義後にメモリが割り当てられ、プログラムの終了後にメモリが解放されます。

● ローカル変数のスコープはローカルです。 、保存期間は定義後にメモリが割り当てられ、関数はドメインの後に解放されます。

● グローバル変数はデフォルトで静的変数として宣言されます。静的変数と自動変数の違いは、保存期間の違いです。 静的変数の保存期間は、プログラムの実行中に存在し、プログラムの終了時にのみ解放されます

● 自動変数のメモリ空間は、のみ存在します。スコープ内にあり、スコープを出ると解放されます。

静的ローカル変数の特徴:

1. 関数の呼び出しと終了では変化しませんが、変数は存在し続けますが、使用することはできません。それを定義する関数が再度呼び出された場合、その関数は引き続き使用でき、前の呼び出し後に残った値は保存されます

2. 静的ローカル変数は 1 回のみ初期化されます

3. 静的プロパティは にのみ初期化できます。 1 つの文字値または定数、式は使用できません。ローカル静的変数が初期値なしで定義されている場合でも、システムは自動的に初期値 0 (数値変数の場合) または null 文字 (文字変数の場合) を割り当てます。静的変数の初期値は 0 です。

4. 関数が複数回呼び出され、呼び出し間で特定の変数の値を保持する必要がある場合は、静的ローカル変数を検討できます。グローバル変数を使用して上記の目的を達成することもできますが、グローバル変数は予期しない副作用を引き起こす場合があるため、ローカル静的変数を使用することをお勧めします。

コードは次のとおりです:

function test()
{
  
 static $var = 5;  //static $var = 1+1;就会报错
    
$var++;  
 echo $var . ' ';
}
test(); //2
test(); //3
test(); //4echo $var; //报错:Notice: Undefined variable: var

静的グローバル変数について:

コードは次のとおりです:

//全局变量本身就是静态存储方式,所有的全局变量都是静态变量
function static_global(){
    global $glo;    
       $glo++;    
      echo $glo.&#39;<br>&#39;;
}
static_global(); //1
static_global(); //2
static_global(); //3
echo $glo . &#39;<br>&#39;; //3

そのため、静的グローバル変数はあまり使用されません。

上記は私があなたのためにコンパイルしたPHPの静的変数とグローバル変数です。

関連記事:

PHPの変数スコープとグローバル変数(画像とテキストのチュートリアル)

一度で完了、PHPのクロージャー関数の使い方と使い方の違い、&referenceの意味はあなたのための詳細な回答

PHPのクラスとメソッドのキーワードチュートリアルの詳細な説明

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

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