ホームページ  >  記事  >  バックエンド開発  >  php_php の例における静的静的変数と通常の変数の違い

php_php の例における静的静的変数と通常の変数の違い

WBOY
WBOYオリジナル
2016-12-05 13:28:221051ブラウズ

phpの静的静的変数と通常の変数の違い

静的変数を形成するには、変数の前に static を追加します。

静的変数と通常の変数の違いは、非静的グローバル変数のスコープはソースプログラム全体であることです。ソースプログラムが複数のソースファイルで構成されている場合、非静的グローバル変数は各ソースファイルで有効です。 静的グローバル変数はスコープを制限します。つまり、変数が定義されているソース ファイル内でのみ有効であり、同じソース プログラム内の他のソース ファイルでは使用できません。静的グローバル変数のスコープは 1 つのソース ファイルに制限され、そのソース ファイル内の関数でのみ共有できるため、他のソース ファイルでのエラーを回避できます。

静的変数と通常の変数の違い:

静的グローバル変数と通常のグローバル変数の違い: 静的​​グローバル変数は、他のファイル単位で参照されないように、一度だけ初期化されます。
静的ローカル変数と通常のローカル変数の違い: 静的​​ローカル変数は 1 回だけ初期化され、次回は前の結果値に基づきます
。 静的関数と通常の関数の違い: 静的​​関数はメモリ内にコピーを 1 つだけ保持しますが、通常の関数は呼び出されるたびにコピーを保持します。

グローバル変数の前にキーワード static を追加すると、グローバル変数はグローバル静的変数として定義されます。

1) メモリ内の場所: 静的記憶領域 (プログラム全体の実行中に静的記憶領域が存在します)

2) 初期化: 初期化されていないグローバル静的変数は、プログラムによって自動的に 0 に初期化されます (明示的に初期化されない限り、自動オブジェクトの値は任意です)

3) スコープ: グローバル静的変数は、宣言されているファイルの外部には表示されません。定義の時点からファイルの終わりまで。

静的変数の利点:

他のファイルからはアクセスされません。他のファイルにある同じ名前の変数を競合することなく変更できます。

メモリ内の場所: 静的ストレージ領域

初期化: 初期化されていないグローバル静的変数は、プログラムによって自動的に 0 に初期化されます (明示的に初期化されない限り、自動オブジェクトの値は任意です)
スコープ: スコープはローカル スコープのままであり、それを定義する関数またはステートメント ブロックが終了すると、スコープも終了します。

注: static を使用してローカル変数を変更すると、ローカル変数の格納場所が元のスタックから静的ストレージ領域に変更されます。ただし、ローカル静的変数はスコープを出た後も破棄されず、プログラムの終了までメモリ内に残りますが、アクセスできなくなります。
static を使用してグローバル変数を変更すると、グローバル変数のスコープが変更されます (グローバル変数が宣言されているファイルの外部には表示されません) が、静的ストレージ領域内にあるそのストレージの場所は変更されません。

通常の関数の例:

リーリー

変数 $w3sky を静的として定義するには、コードは次のとおりです:

リーリー

静的変数は、再帰関数を処理する方法も提供します。再帰関数は、それ自体を呼び出すメソッドです。再帰関数を作成する場合は、終了せずに無限に再帰する可能性があるため注意してください。必ず再帰を終了する方法を用意してください。次の単純な関数は、静的変数 $count を使用して再帰的に 10 までカウントし、いつ停止するかを決定します。 静的変数と再帰関数の例:

リーリー

注: 静的変数は式の形式で宣言できません。例: static $int = 1+2; この方法は間違っていますが、この宣言方法は正しいです。

読んでいただきありがとうございます。皆さんのお役に立てれば幸いです。このサイトのご支援に感謝します。

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