今回のお題は
変数のスコープ、有効範囲についてです。
\登場人物はー?/
・ローカル変数
・グローバル変数
・静的(static)変数
コメントつけまくったらすんごーい醜いww

▶️ローカル変数
関数内で定義されて、有効範囲はその関数内のみ。
4行目の$aはローカル変数ではない。
4 $a = 1;
5 function showLocalNum()
6 {
7 //-----ローカル変数 $aのスコープ ここから-----
8 $a = 2; // ←ローカル変数 $aの定義
9 print 'ローカル変数 $a: ' . $a . "\n";
10 //-----ローカル変数 $aのスコープ ここまで-----
11 }
12 showLocalNum(); // 2 →ローカル変数 $a
13 print '4行目の$a: ' . $a . "\n"; //8行目のローカル変数の$aではない。
ローカル変数 $a: 2 4行目の$a: 1
▶️グローバル変数
関数内外問わず定義され、有効範囲はPHPスクリプト全体
17 $g = 1;
18 function showGlobalNum()
19 {
20 global $g;
21 $g++;
22 print 'グローバル変数 $g: ' . $g . "\n";
23 }
24 print '関数showGlobalNum実行前の17行目の$g: ' . $g . "\n"; // 1 まだグローバル変数になってない。
25 showGlobalNum(); // 2 →グローバル変数 $g
26 showGlobalNum(); // 3 →グローバル変数 $g
27 print '関数showGlobalNum実行前後の17行目の$g: ' . $g . "\n"; // 3 グローバル変数 $gになってる
関数showGlobalNum実行前の17行目の$g: 1 グローバル変数 $g: 2 グローバル変数 $g: 3 関数showGlobalNum実行前後の17行目の$g: 3
▶️静的(static)変数
関数内で定義される。初期化は最初の一回のみ行われ、その後は前の値が残る。
31 //static $d = 100; //関数外では定義できない
32 function showStaticNum()
33 {
34 static $s = 100; //←ローカル変数 $sの定義
35 $s++;
36 print '静的(static)変数 $s: ' . $s . "\n";
37 }
38 showStaticNum(); // 101
39 showStaticNum(); // 102
40 showStaticNum(); // 103
静的(static)変数 $s: 101 静的(static)変数 $s: 102 静的(static)変数 $s: 103
<まとめ>
ローカル変数しか、あんまり使わんけども。