function foo(){ static $i = 1; echo $i++; } foo(); // 1 foo(); // 2 foo(); // 3 static $i=1;は最初に呼ばれたときに一回だけ初期化され、その後は関数を抜けても値が保持され続けます。 メモ化や再帰処理などに便利な機能です。 ただし、static変数の宣言には定数式しか使えず、関数や変数などは使えません。 function foo($param){ static $i = $param; // Fatal error: Constant expression contains invalid operations static $j = bar(); // Fatal error: Constant expression contains invalid operations } これは別に技術的理由では