PHPのend関数を使えば、配列の最後の要素値を取得できます。そして、それと同時に、配列の内部ポインタを最後の要素まで進めることができます。
PHPプログラミング経験者の中には、end関数を聞いたことはあるけど今まで使ったことがないという人も多いでしょう。そこで今回は、PHPのend関数の使い方や内部ポインタについての解説をしていきます。ぜひご覧ください。
目次
PHPのend関数とは
PHPのend関数とは、配列の最後の要素の値を取得する関数です。
PHPの配列は、内部ポインタが各要素に対する現在の位置を示しています。end関数は、この内部ポインタの位置を配列の最後の要素まで進め、その値を返します。
ちなみに、内部ポインタが示している現在位置の要素をカレント(カレント要素)といいます。配列の要素には、「キー」と「値」がセットで格納されていますが、end関数が返すのは、最後の要素の「値」です。
なお、配列作成時の内部ポインタは、最初の要素をカレントとしています。
PHPのend関数の使い方
それでは、実際にPHPのend関数の使い方を見ていきましょう。
まず、end関数を書き方は次の通りです。
1 |
end( $配列名 ) |
end関数の引数に、配列を指定することで、その配列の最後の要素値を返します。もし、引数に指定した配列が、空の配列だった場合には「false」を返します。
実際にend関数を使ったソースコードの例は、以下の通りです。
1 2 3 4 5 6 |
<?php $day = array('yesterday', 'today', 'tomorrow'); echo end($day); ?> |
上記サンプルコードの通り、end関数を使うことで配列dayの最後の要素である「tomorrow」が出力されました。
PHPのend関数とreset関数はセットで覚える
PHPのend関数とセットで覚えておきたいのが、reset関数です。end関数が配列の最後の要素の値を取得する関数であるのに対し、reset関数は配列の最初の要素の値を取得する関数です。内部ポインタの位置もend関数同様、最初の要素位置に戻します。
end関数とreset関数の動作の違いについても、ソースコード例を使ってみてみましょう。なお、内部ポインタの位置を確認するため、配列の現在の要素値を取得する関数であるcurrent関数も使用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php $day = array('yesterday', 'today', 'tomorrow'); echo 'current関数:' . current($day) . '<br>'; echo '<br>'; echo 'end関数:' . end($day) . '<br>'; echo 'current関数:' . current($day) . '<br>'; echo '<br>'; echo 'reset関数:' . reset($day) . '<br>'; echo 'current関数:' . current($day) . '<br>'; ?> |
end関数:tomorrow
current関数:tomorrow
reset関数:yesterday
current関数:yesterday
上記サンプルコードの通り、end関数とreset関数が出力する値の要素は異なります。
end関数は配列の最後の要素である「tomorrow」を出力し、reset関数は配列の最初の要素である「yesterday」を出力しました。各関数を使った後は、内部ポインタの位置も移動しているのが、current関数の出力結果から確認できます。
なお、他にもPHPには次のような配列のキーや要素を返す関数が存在します。
- each関数:配列から現在のキーと値を返し、内部ポインタを進める
- prev関数:配列の内部ポインタの位置を一つ前に戻す
- next関数:配列の内部ポインタの位置を進める
- array_key_last関数:配列の最後のキーを返す
配列の中身を参照したり、内部ポインタの位置を変えたいときには、上記の関数を使ってみると良いでしょう。
PHPで配列の最後の要素を操作する
PHPには、end関数以外でも配列の最後の要素を操作する方法があります。そこで今回は、「配列の最後の要素値をforeach文で取得する方法」と「配列の最後の要素をarray_pop関数で削除する方法」について紹介します。
配列の最後の要素値をforeach文で取得する方法
PHPのend関数の存在を知らなかった場合、配列の最後の要素を取得する方法として、真っ先に思いつくのがforeach文を使った方法でしょう。
foreach文では、配列のループ処理に利用できるので、処理を工夫すれば、配列の最後の要素値を返すソースコードを作ることができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php $day = array('yesterday', 'today', 'tomorrow'); $i = 1; foreach($day as $value){ if (count($day) == $i){ echo $day[$i-1]; } $i++; } ?> |
上記サンプルコードでは、foreach文を工夫することでend関数と同じ出力結果を得ることができました。
なお、他のプログラミング言語であれば、ループ処理には、for文を使うのが一般的です。しかし、PHPプログラムのループ処理に関しては、foreach文が最も利用頻度が高いでしょう。
上記のサンプルコードからもわかる通り、foreach文は使い勝手がかなりいいので、PHPプログラミングを学ぶのであれば、必ず使えるようになりましょう。
配列の最後の要素をarray_pop関数で削除する方法
PHPのarray_pop関数を使えば、配列の最後の要素を削除することができます。
array_pop関数の書き方は次の通りです。
1 |
array_pop( $削除対象の配列名 ) |
array_pop関数の書き方は、引数に最後の要素を削除したい配列を指定するだけです。それでは、実際にarray_pop関数を使ってみましょう。
1 2 3 4 5 6 7 8 |
<?php $day = array('yesterday', 'today', 'tomorrow'); array_pop($day); print_r($day); ?> |
(
[0] => yesterday
[1] => today
)
上記サンプルコードでは、array_pop関数を使って配列dayの最後の要素「tomorrow」を削除しました。削除後の配列dayの中身を確認してみると、「tomorrow」が削除されています。
array_pop関数を使えば、end関数で取得した要素を順番に削除していくことができます。
例えば、次のソースコードのような処理で活用することができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php $day = array('yesterday', 'today', 'tomorrow'); echo '1:' . end($day) . '<br>'; array_pop($day); echo '2:' . end($day) . '<br>'; array_pop($day); echo '3:' . end($day) . '<br>'; array_pop($day); ?> |
2:today
3:yesterday
上記サンプルコードでは、配列dayの要素値を後ろから順番に出力することができました。end関数とarray_pop関数を組み合わせは、他にも色々な処理に活用できそうですね。
まとめ
PHPのend関数は、配列の最後の要素を取得する関数です。end関数を使うと配列の内部ポインタも移動する点に注意しましょう。
PHPには、他にも配列を操作する関数が用意されています。特にreset関数とend関数は真逆の役割をもつ関数なので、セットで覚えるのがおすすめです。
なお、配列のend関数を使う以外にも配列の最後の要素を操作することができます。色々と工夫したり、組み合わせたりして、よりレベルの高いPHPプログラミングをできるようになりましょう。