● グローバル変数のスコープは定義時点からソースファイルの終わりまでであり、定義後にメモリが割り当てられ、プログラムの終了後にメモリが解放されます。
● ローカル変数のスコープはローカルです。 、保存期間は定義後にメモリが割り当てられ、関数はドメインの後に解放されます。
● グローバル変数はデフォルトで静的変数として宣言されます。静的変数と自動変数の違いは、保存期間の違いです。 静的変数の保存期間は、プログラムの実行中に存在し、プログラムの終了時にのみ解放されます
● 自動変数のメモリ空間は、のみ存在します。スコープ内にあり、スコープを出ると解放されます。
静的ローカル変数の特徴:
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.'<br>'; } static_global(); //1 static_global(); //2 static_global(); //3 echo $glo . '<br>'; //3
そのため、静的グローバル変数はあまり使用されません。
上記は私があなたのためにコンパイルしたPHPの静的変数とグローバル変数です。
関連記事:
PHPの変数スコープとグローバル変数(画像とテキストのチュートリアル)
一度で完了、PHPのクロージャー関数の使い方と使い方の違い、&referenceの意味はあなたのための詳細な回答
PHPのクラスとメソッドのキーワードチュートリアルの詳細な説明
以上がPHP の静的変数とグローバル変数の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。