パスワードを忘れた? アカウント作成
450404 journal

T.MURACHIの日記: PHP のスコープ

日記 by T.MURACHI

スコープの扱いは C と同じっぽい。関数単位ではスコープが別れてくれるんだけど (そして関数内からグローバル変数にアクセスする宣言 global のみが用意されている)、構文上のブロック単位でスコープを分ける手段が用意されていない。だからグローバルスコープ上で for 文なんかを書くと、アタリマエのことだけど、問答無用でグローバルスコープの変数が汚されてしまう。

$ php -r '$i = 999; for ($i = 0; $i < 10; $i++) ; print "$i\n";'
10

C++ や Java ならブロック内で新たに変数を宣言すれば、同じ名前の変数がその外部に既に存在していても、ブロック内ではそのブロックローカルの変数として扱われる。 Perl でさえ、 my で宣言すれば同じことができる。

$ perl -e '$i = 999; for (my $i = 0; $i < 10; $i++) {} print "$i\n"'
999

この辺あんまり気にする人おらんのかなぁー。 ;-(

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

あと、僕は馬鹿なことをするのは嫌いですよ (わざとやるとき以外は)。-- Larry Wall

読み込み中...