ぶろぐめんどくさい

技術系の記事と漫画レビューが入り混じった混沌

深く追求しないローカルorグローバル for PHP

問題です。

以下のコードに示す$hogeはローカル変数か、それともグルーバル変数か。

if($flg) {
  $hoge = 1;
}

正解はローカル変数。 C++と同じですね。

では次の問題です。

以下のコードに示す$hogeはローカル変数か、それともグルーバル変数か。

$hoge = 0;
if($flg) {
  $hoge = 1;
}

正解はグローバル変数

if文の外で定義しているからですね。

では最後の問題です。 以下のコードに示す$hogeはローカル変数か、それともグルーバル変数か。

try {
  $hoge = 1;
} catch(Exception $e) {
  echo $e->getMessage();
}

ローカル変数? 違います。

正解はグローバル変数$hogeはtryの外でも使えます。

だけどまあ、 グローバル変数になるかどうかはスコープによりけりなので、 そこらへんは深く追求しないで。