PHP - ブロックと変数のスコープ

公開日:2020-12-22 更新日:2020-12-22
[PHP]

1. 説明

複数の処理を波括弧( { と } )で囲って、ブロックにすることができます。
後ほど出てくる構文などで使用します。
//初期化
{
  $a = 1;
  $b = 2;
}

//処理
{
  var_dump($a);
  var_dump($b);
}
実行結果
int(1)
int(2)

PHP の場合、単独で使用しても動作は変わりませんが、
他の言語では、ブロックの中で定義された変数は、ブロックの外からは参照できない場合があります。
そのため上記のプログラムの2つ目のブロックでは、変数 $a と $b が、スコープ外となるため、エラーになります。

PHP とは関係なくなりますが、
ブロックを入れ子にした場合、ブロックの外で定義された変数を、ブロックの中で参照することはできます。
{
  $a = 1;
  $b = 2;
  
  {
    var_dump($a);
    var_dump($b);
  }    
}