配列の先頭と最後の取得方法
クラスのメンバ変数に配列があるとして、その配列の先頭と最後の要素をそれぞれ取得したかった。
先頭と最終を取り出す標準関数があったな・・と思い、
<?php // $this->_array は array('hoge', 'foo', 'bar') とあるとする $first = array_shift($this->_array); $last = array_pop($this->_array);
とやって、コードを実行したら、意図した通りに動かなかった。
で、よくよく配列の中身をダンプしたら、array('foo') のみになってた。
# 配列の中身を後で使いたかった。
ちゃんとマニュアル読んだら、「要素分ひとつ短くなる」と書いてあった・・・orz
PHP: array_shift - Manual
PHP: array_pop - Manual
配列の中身を残したまま、先頭と、最後の要素を取得するにはどうしたら効率が良いのだろう。
とりあえず、
<?php reset($this->_array); $first = current($this->_array); $last = end($this->_array); reset($this->_array);
ってしたら、意図通り取れたけど、もっと効率の良いやり方があるのかな。
ご存知の方、or オレならこう書くという方、やり方教えて下さい。<(_ _)>
追記:4/30
reset() の戻り値で最初の要素が取れると教えて頂いた。
komura さん、ありがとうございます!
ということで、こんな感じになった。
<?php $last = end($this->_array); $first = reset($this->_array)
コードがすっきりした!
マニュアルちゃんと読めって話ですね・・・。