ループの中で変数を定義するしたら、
次のループのときに変数は定義されているのだろうか。
やってみた。
<?php for ($i = 0; $i < 3; $i++) { if (isset($p)) { echo 'hoge' . "\n"; } $p = $i; if (isset($p)) { echo 'hoge' . "\n"; } } ?>
hoge
hoge
hoge
hoge
hoge
i = 0 while i < 3 p defined?(a) a = i i += 1 p defined?(a) end
nil
"local-variable"
nil
"local-variable"
nil
"local-variable"
phpだとループ内で定義された変数は次のターンでも生きているが、
rubyだとループ内で定義された変数は次のターンにはリセットされている。
追記:突っ込みを受けましたが、別にスコープの話ではなかった。