配列の先頭と最後の取得方法

クラスのメンバ変数に配列があるとして、その配列の先頭と最後の要素をそれぞれ取得したかった。
先頭と最終を取り出す標準関数があったな・・と思い、

<?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)

コードがすっきりした!
マニュアルちゃんと読めって話ですね・・・。