違い: 1. 静的変数は 1 回のみ初期化されますが、通常の変数は複数回初期化できます。 2. 通常グローバル変数の有効範囲はソースプログラム全体であり、ソースプログラムが複数のソースファイルで構成されている場合、通常グローバル変数は各ソースファイル内で有効ですが、静的グローバル変数はその変数が存在するソースファイル内でのみ有効です。定義されている範囲内で有効です。
このチュートリアルの動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター
変数の前に static を追加します。 form 静的変数 (静的変数)。
静的変数と通常の変数の違いは、非静的グローバル変数のスコープはソース プログラム全体であることです。ソース プログラムが複数のソース ファイルで構成される場合、非静的グローバル変数は各ソース ファイル内にあります。 。 効果的。静的グローバル変数はスコープを制限します。つまり、変数が定義されているソース ファイル内でのみ有効であり、同じソース プログラム内の他のソース ファイルでは使用できません。静的グローバル変数のスコープは 1 つのソース ファイルに限定され、そのソース ファイル内の関数でのみ共有できるため、他のソース ファイルでのエラーを回避できます。
静的変数と通常の変数の違い:
静的グローバル変数と通常のグローバル変数の違い: 静的グローバル変数は、初期化されないように 1 回だけ初期化されます。他のファイル単位で参照される ;
静的ローカル変数と通常のローカル変数の違い: 静的ローカル変数は 1 回だけ初期化され、次回は前の結果値に基づきます;
静的関数と通常のローカル変数の違い関数: 静的関数はメモリ内にコピーを 1 つだけ持ちます。通常の関数は呼び出しごとにコピーを維持します。
グローバル変数の前にキーワード static を追加すると、グローバル変数はグローバル静的変数として定義されます。
1) メモリ内の場所: 静的ストレージ領域 (プログラム実行中に静的ストレージ領域が存在します)
2) 初期化: 初期化されていないグローバル静的変数は、プログラムによって自動的に初期化されます。 0 (自動オブジェクトの値は、明示的に初期化されない限り任意です)
3) スコープ: グローバル静的変数は、宣言されているファイルの外部には表示されません。定義の時点からファイルの終わりまで。
静的変数の利点:
は他のファイルからアクセスされません。同じ名前の変数を使用して、競合することなく他のファイルを変更できます。
メモリ内の場所: 静的ストレージ領域
初期化: 初期化されていないグローバル静的変数は、プログラムによって自動的に 0 に初期化されます (自動オブジェクトの値は任意です)。明示的に初期化されない限り)
スコープ: スコープはローカル スコープのままです。スコープを定義する関数またはステートメント ブロックが終了すると、スコープも終了します。
注: static を使用してローカル変数を変更すると、ローカル変数の格納場所が元のスタックから静的ストレージ領域に変更されます。ただし、ローカル静的変数はスコープを出た後も破棄されず、プログラムの終了までメモリ内に残りますが、アクセスできなくなります。
static を使用してグローバル変数を変更すると、グローバル変数のスコープが変更されます (宣言されているファイルの外部には表示されません) が、静的ストレージ領域内にあるそのストレージの場所は変更されません。 . .
通常の関数の例:
<?php function Test() { $w3sky = 0; echo $w3sky; $w3sky++; /*函数每次调用时都会将 $w3sky 的值设为 0 并输出 "0"。将变量加一的 $w3sky++ 没有其到效果,因为一旦退出本函数则变量 $w3sky 就不存在了。*/ } ?>
変数 $w3sky を静的として定義するには、コードは次のとおりです:
<?php function Test() { static $w3sky = 0; echo $w3sky; $w3sky++; } //本函数每调用Test()都会输出 $w3sky 的值并加一。 ?>
静的変数も提供されます再帰関数を処理する方法。再帰関数は、それ自体を呼び出すメソッドです。再帰関数を作成するときは、終了せずに無限に再帰する可能性があるため、再帰関数を作成するときは注意してください。再帰を中止する方法を必ず用意してください。次の単純な関数は、再帰的に 10 までカウントし、静的変数 $count を使用して停止時期を決定します。静的変数と再帰関数の例:
<?php function Test() { static $count = 0; $count++; echo $count; if ($count < 10) { Test(); } $count--; } ?>
注: 静的変数は式として宣言できません。例: static $int = 1 2; この方法は間違っていますが、 static $int = 1; この宣言方法は正しいです。
推奨学習: 「PHP ビデオ チュートリアル 」
以上がPHPの静的変数と通常の変数の違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。