関数内で静的変数をunset()すると残りの処理の間でのみ値が破棄される

この投稿は最終更新日から1年以上経過しています

ローカルスコープにのみ存在できるPHPの静的(static)変数は、スコープが外れても値を維持している。では、その関数内で静的変数をunset()で破棄したらどうなるのだろう?

function static_unset()
{
	static $num = 0;
	echo ++$num;
	unset($num);
	echo $num = 7;
}

static_unset(); //17
static_unset(); //27

破棄されるのはその関数の残りの処理の間だけで、関数をふたたび呼び出すと値は復元している(破棄後に変更した値も維持しない)。

参考