変数の有効範囲
- 2013 8/7
- カテゴリー : 制御・関数
1 2 3 4 5 6 |
$x =10; function checkScope(){ return $x = 50; } print checkScope(); print $x; |
このコードを実行したとき
5行目のprint checkScope(); と 6行目のprint $x; の実行結果を答えてください。
では、
1 2 3 4 5 6 7 |
$x =10; function checkScope(){ global $x; return $x = 50; } print checkScope(); print $x; |
この場合はどうなるでしょう?
global命令を使用して、関数内の$xをグローバル変数$xとして扱うこととして命令しています。
変数のスコープは関数内で宣言をした変数はその関数内でのみ使用~破棄というライフサイクルを持っています。なので、
1 2 3 4 5 6 7 8 9 |
$x =10; function checkScope(){ $x = 0; $x++; return $x; } print checkScope(); print checkScope(); print $x; |
というコードはまったく意味がありませんね。
ところが、関数内で宣言したローカル変数の値を保持し続けられる命令文 staticが存在します。
1 2 3 4 5 6 7 8 9 |
function checkStatic(){ static $sTest; return ++$sTest; } print checkStatic(); echo '<br>'; print checkStatic(); echo '<br>'; echo $sTest = isset($sTest)? $sTest:NULL; |