PHPで配列の最初の要素を取得する方法を解説!
PHPで配列の先頭要素を取得する方法についてご紹介します。要素の取得と配列の中身の変化についても注意しながら解説していきます。
PHPの配列って?
通常プログラム言語の配列は キーが数値である添字配列と、キーを文字列とする連想配列の2種類があります。
PHPでは添字配列と連想配列の間に違いはなく、同じ配列で整数のインデックスと文字列のインデックスを同時に使えます。
また、PHPの配列は内部ポインタ(カーソル)を持っており、配列内で現在参照している要素をシフトすることができます。
配列の取り扱いには内部ポインタを利用する場合と、そうでない場合とがある事を意識しながら紹介していきたいと思います。
PHPで配列の最初の要素を取得する方法
PHPで配列の最初の要素を取得する方法についてご紹介します。
PHPで配列から最初の要素を一つ取り出す
array_shift()
は配列から最初の要素を一つ取得できますが、取得した要素は配列から消えてしまいます。
「取得」ではなく「取り出す」関数なのです。添字配列の場合、最初の要素を取り出された配列はインデックスも 0 から再度採番されますが、連想配列の場合インデックスは変更されません。
array_shift()
の引き数には変数を指定する必要がある為、カッコ()
内に直接配列を記述する事はできません。
そのため、配列を一度変数に代入し、array_shift()
にセットする形となります。
変数が配列でない場合や、配列が空の場合はNULL
を返しますので注意してください。
array_shift
$month = ['January', 'February', 'March', 'April', 'May'];
echo array_shift($month);
サンプルコードでarray_shift()
実行後の配列の変化を確認してみましょう。
配列から最初の要素が削除され、インデックスが 0 から採番しなおされている事がわかります。
PHPで配列の内部ポインタを初期化し、最初の要素を取得する
内部ポインタを配列の最初の要素に戻すreset()
について解説していきます。
reset()
の引き数にも変数を指定する必要がある為、array_shift()
と同様に一度変数に配列を代入してから関数の第一引き数へセットする形となります。reset()
を使うと、内部ポインタは配列の最初の要素にセットされているので、そのままセットされている要素を参照する事ができます。
array_shift()
との最大の違いは、取得した要素が配列から消えない事です。
また、配列が空の場合はFALSE
を返しますので注意してください。
reset
$month = ['January', 'February', 'March', 'April', 'May'];
echo reset($month);
サンプルコードで正しく配列の最初の要素が取得できているか確認してみましょう。
配列の要素が削除されていない事にも注目してみましょう。
PHPで配列内の内部ポインタがセットされた要素を取得する
current()
は、内部ポインタが現在指している配列要素を取得する事が出来ます。
配列を作成後、内部ポインタは最初の要素を指すように初期化されています。内部ポインタを操作しない限り配列の最初の要素を取得する事ができます。
内部ポインタが最終要素の次を指していたり 配列が空だったりした場合、current()
はFALSE
を返します。
current
$month = ['January', 'February', 'March', 'April', 'May'];
echo current($month);
current()
自体は内部ポインタを移動する機能は持ち合わせていませんので、別の関数を使って内部ポインタを操作しながら、内部ポインタがセットされている配列要素をcurrent()
が取得している事を確認してみましょう。
内部ポインタについては、改めてご紹介させていただきますが、ここではcurrent()
が内部ポインタの値を取得している事を確認します。
PHPで配列のインデックスを指定して最初の要素を取得する
PHPで配列のインデックスを取得するにはkey()
を利用します。
配列を作成後、内部ポインタは最初の要素を指すように初期化されていますので、key()
は配列の最初の要素のインデックスとなります。
内部ポインタを操作後、再度 先頭要素のインデックスを取得したい場合、reset()
と併せて利用するといいでしょう。
key
$month = ['January', 'February', 'March', 'April', 'May'];
$month[key($month)];
key()
が内部ポインタの現在のインデックスを取得している事を、サンプルソースで確認してみましょう。
まとめ
array_shift()
は配列内の要素が書き換わる為、大きなサイズの配列に利用した場合には、処理が遅くなる事があります。
配列の最初の要素を取得するだけであれば、別の方法を選択する方がより安全な方法と言えるでしょう。
大きな配列を扱う場合は、負荷や速度についても意識しながらコーディングしてみてください。
また今回は配列の最初の要素の取得方法について解説しましたが、下記では配列の最後の要素についての取得方法を解説しています。ぜひあわせて確認してみましょう。
