ゆずめも

メモ的なブログです。主に勉強した事について書いてます。

PHPのforeach

大概の言語であるforeach
触ったことある言語でないのはc言語くらいかな


phpのforeachのマニュアル読んでて
変な動作だなーと思ったけど、辺り前かとも思う動作を見つけたので紹介

<?php
  $arr = array(1,2,3);
  foreach($arr as $v) {
    echo "$v\n";
  }
  echo "last=$v\n";

このプログラムを実行すると

1
2
3
last=3

と出力されます。


foreachで最後に取り出された要素が
終わったあとでも参照したままらしいです

{}でスコープが死なずに、変数が生きている
こういう思ってたのと違う動作がバグの原因になったりするんだろうなー


マニュアルでは

unset($v);

で参照を解除しましょう。
って書いてるけど、スコープで死んでくれればいいのに