変数の有効範囲

 

このコードを実行したとき
5行目のprint checkScope(); と 6行目のprint $x; の実行結果を答えてください。

では、

この場合はどうなるでしょう?

global命令を使用して、関数内の$xをグローバル変数$xとして扱うこととして命令しています。

変数のスコープは関数内で宣言をした変数はその関数内でのみ使用~破棄というライフサイクルを持っています。なので、

というコードはまったく意味がありませんね。
ところが、関数内で宣言したローカル変数の値を保持し続けられる命令文 staticが存在します。