静的変数

静的変数とは、関数実行後も値を失わないローカル変数。通常のローカル変数は、関数を呼び出す度に、初期化するが、静的変数は、関数を最初に呼び出し時だけ、初期化する。

静的変数の定義

変数の前に、staticを付加する。

function sample() {
    static $var = 0; // 静的変数を定義
}

静的変数$varに、「0」を代入。

サンプル

静的変数の使用例

<?php
function sample() {
    $varA = 0; // 通常のローカル変数を定義
    static $varB = 0; // 静的変数を定義
    $varA++;
    $varB++;
    echo '$varA: ' . $varA . ' | ';
    echo '$varB: ' . $varB . '<br />';
}
sample();
sample();
sample();
?>

↓↓↓出力結果↓↓↓

$varA: 1 | $varB: 1
$varA: 1 | $varB: 2
$varA: 1 | $varB: 3

通常のローカル変数$varAは、関数を呼び出す度に初期化され、「0」を代入するので、常に「1」を出力する。これに対し、静的変数$varBは、関数を最初に呼び出し時だけ初期化し、関数実行後の値を保持し続けることができるので、関数を呼び出す度に、「1、2、3」と値が増えていく。

再帰関数における静的変数の使用例

静的変数を使うことで、再帰関数の再帰呼び出し回数を制御できる。

<?php
function sample() {
    $varA = 0; // 通常のローカル変数を定義
    static $varB = 0; // 静的変数を定義
    $varA++;
    $varB++;
    echo '$varA: ' . $varA . ' | ';
    echo '$varB: ' . $varB . '<br />';
    if ( $varB < 5 ) {
        sample();
    }
}
sample();
?>

↓↓↓出力結果↓↓↓

$varA: 1 | $varB: 1
$varA: 1 | $varB: 2
$varA: 1 | $varB: 3
$varA: 1 | $varB: 4
$varA: 1 | $varB: 5

スポンサード リンク

カテゴリー: PHP, 変数 タグ: パーマリンク