PHPの変数のスコープについて完全に勘違いしていたこと

他言語からPHPに移って来た身の私にとっては次のコードは完全に機能しないものと思っていました。

なぜならif文で初登場の$hogeはifの外からは絶対に見えないからです。ただ、これは結果として「hoge!」と出力されます。

Javaの場合だと以下のように書かないといけないと思います(適当に書いたので間違ってるかもしれないです)。

 Javaの場合はif文でもスコープは発生しますから条件分の中で変数の値を変える場合、その外で宣言しておく必要があります。僕の場合、全くこれと同じ理解をしていただめ、PHPの場合でも外で宣言だけしていました…

PHPの場合上記3つの場合のみでスコープが発生します。なんでif文やfor文ではローカルスコープ内のくくりのため括弧の位置など気にしなくてもいいようです。

PHPやって2年位経ちますが今まで無駄なコード結構書いていたなと思います…というかここでスコープ発生しないとなるとすごいわかりづらいよなぁという印象もあります。

ぐぐってみると同じこと言っている人多少見受けられたので勘違いしていた人も多いんではないでしょうか(と思いたい)。

 

私たちはyyUXというUXレビューサイトを運営しています。あらゆるサービスのUX改善を目指しています。一度のぞいてみて下さい。よろしくお願いします。

yyux.jp