タグ

ブックマーク / pasela.hatenablog.com (2)

  • foreachの$valueを参照で受けると思わぬバグを引き起こす - ぱせらんメモ

    PHP :: Bug #29992 :: foreach by reference corrupts the array <?php $array = array(1, 2, 3); foreach ($array as &$value) {} var_dump($array); foreach ($array as $value) {} var_dump($array); ?> PHP5からはforeachの$valueの部分を参照で受け取ることができるようになったんだが、このコードがいとも簡単に配列$arrayをぶち壊してしまうというお話。 上記コードの結果を予測できるかな? array(3) { [0]=> int(1) [1]=> int(2) [2]=> &int(3) } array(3) { [0]=> int(1) [1]=> int(2) [2]=> &int(2) //

    foreachの$valueを参照で受けると思わぬバグを引き起こす - ぱせらんメモ
    fumikony
    fumikony 2012/04/13
  • SPLでイテレータを使ってみる - ぱせらんメモ

    PHPにはSPL(Standard PHP Library)という便利……というほどには充実してないライブラリがあるんだけど、いまいち知名度が低いようで、あまり使ってるのを見たことがない。標準で組み込まれてるのに。 ちなみにC言語からプログラムを覚えた身としては、どうしてもC++のSTL(Standard Template Library)を連想してしまうのだが、STLとは毛色が違う。全然関係ない。 SPLが提供するもの SPLの機能をおおざっぱに分けると次の3種類になる(細かくは8種類)。 イテレータ オブザーバ 例外 基的にどれもJavaを意識した感じ。 イテレータは実装することでオブジェクトをforeachとかで回したりフィルタリングできるようになるというもの。 オブザーバはデザインパターンのオブザーバパターンを実装するためのもの。 例外は標準Exceptionクラスから派生したI

    SPLでイテレータを使ってみる - ぱせらんメモ
  • 1