ホームページ  >  記事  >  バックエンド開発  >  PHPの静的ローカル変数は変更できますか?

PHPの静的ローカル変数は変更できますか?

(*-*)浩
(*-*)浩オリジナル
2019-10-12 14:24:105164ブラウズ

phpのstaticローカル変数は値を変更できないわけではなく、値を変更できない量を定数と呼びます。保持する値は変更可能であり、最新の状態を保ちます。関数が呼び出されたとき、または関数が終了したときに変化しないため、静的であると言われます。つまり、最後に関数を呼び出したときに静的変数に特定の値を割り当てた場合、その値は次回関数が呼び出されたときも変更されません。

PHPの静的ローカル変数は変更できますか?

#静的変数 型指定子は静的です。 (推奨学習: PHP ビデオ チュートリアル )

静的変数は静的記憶方式に属し、その記憶領域はメモリ内の静的データ領域です (記憶ユニットはメモリ内に割り当てられます)。静的記憶領域) の場合、この領域のデータはプログラムの実行中ずっとこれらの記憶領域を占有し (プログラムの実行中は解放されません)、そのメモリ アドレスはプログラム全体が終了するまで変更されないと考えることもできます。 (対照的に、auto 自動変数、つまり動的ローカル変数は動的ストレージ カテゴリに属し、動的ストレージ領域を占有し、関数呼び出しが完了すると解放されます)。

静的変数はプログラムの実行中常に存在しますが、その範囲外で使用することはできません。

静的ローカル変数:

1. 静的型の内部変数は自動自動変数 (つまり、静的宣言のないローカル変数) と同じであり、特定の関数。ローカル変数、つまり、変数は、変数が定義されている関数内でのみ使用できます。2 つのスコープは同じです。

2 つの違いは、auto 自動変数は、関数が呼び出されて終了すると存在します。消えますが、静的クラスのローカル変数は存在しません。変数が配置されている関数が呼び出されるかどうかに関係なく、常に存在します。

ただし、変数は継続しますが、存在しても使用することはできません。それを定義する関数が再度呼び出された場合、その関数は引き続き使用でき、前回の呼び出し後に残った値は保存されます。つまり、静的型の内部変数は、特定の関数内でのみ使用できるが、常に記憶領域を占有する変数です。

2. 関数本体で静的変数を定義しているときに初期化が実行された場合、プログラムは今後初期化操作を実行しなくなります (関数内に表示される基本型の静的変数初期化ステートメントは、関数内でのみ有効になります)初めて).実装)。自動変数への初期値の代入は関数呼び出し時に行われ、関数を呼び出すたびに再度初期値が与えられるため、代入文を実行するのと同じになります。

3. 静的ローカル変数の初期化式は、定数または定数式である必要があります。ローカル静的変数が初期値なしで定義されている場合でも、システムは自動的に初期値 0 (数値変数の場合) または null 文字 (文字変数の場合) を割り当てます。静的変数の初期値は 0 です。自動変数 auto は、初期値が代入されていない場合、その値は不定な値となります。

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

注: ローカル静的変数はメモリを長時間占有し、可読性も低いため、必要な場合を除き、ローカル静的変数の使用は避けてください。

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

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