変数のスコープ(=有効範囲)

 

 

 

今回のお題は

変数のスコープ、有効範囲についてです。

 

 

\登場人物はー?/

・ローカル変数

・グローバル変数

・静的(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

 

 

<まとめ>

ローカル変数しか、あんまり使わんけども。

 

 

投稿者:

kin29man

農学部卒の7年目エンジニアです👩‍💻 PHPとGASが好きです!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です