関数内で静的変数をunset()すると残りの処理の間でのみ値が破棄される
この投稿は最終更新日から1年以上経過しています
ローカルスコープにのみ存在できるPHPの静的(static)変数は、スコープが外れても値を維持している。では、その関数内で静的変数をunset()で破棄したらどうなるのだろう?
function static_unset()
{
static $num = 0;
echo ++$num;
unset($num);
echo $num = 7;
}
static_unset(); //17
static_unset(); //27
破棄されるのはその関数の残りの処理の間だけで、関数をふたたび呼び出すと値は復元している(破棄後に変更した値も維持しない)。