PHPで配列の最初の要素を取り出す!array_shift()の活用例
生徒
「PHPで配列の最初に入っている値だけを取り出すことはできますか?」
先生
「PHPでは、array_shift()を使うと、配列の最初の要素を取り出すことができます。」
生徒
「最初の要素を取り出すと、配列はどうなるんですか?」
先生
「取り出した要素は配列から削除され、残りの要素だけが配列に残ります。」
生徒
「先頭から順番に処理したいときに使えそうですね。」
先生
「その通りです。順番待ちのデータや、最初の値を取り出したい処理で便利です。基本から見ていきましょう。」
1. PHPの配列とは?
PHPの配列とは、複数のデータを1つの変数にまとめて保存できる仕組みです。通常の変数は1つの値を入れる箱のようなものですが、配列は複数の箱が並んだ棚のようなものです。たとえば、商品名、名前一覧、点数一覧、カテゴリ一覧、注文内容など、たくさんの値をまとめて扱いたいときに配列を使います。
PHP初心者の方は、配列を買い物かごのようなものだと考えるとわかりやすいです。買い物かごには、りんご、みかん、ぶどうのように複数の商品を入れられます。PHPの配列にも、同じように複数の値を順番に入れることができます。
PHPの数値配列では、配列の中に入っている値に番号が付きます。この番号を添字と呼びます。添字とは、配列の何番目に入っているかを表す番号です。PHPでは最初の要素の番号は1ではなく0から始まります。つまり、最初の要素は0番目、次の要素は1番目、さらに次は2番目になります。
配列の基本を理解すると、array_shift()のような配列操作の関数も理解しやすくなります。PHPの配列操作は、Webアプリケーション開発、フォーム処理、一覧表示、データ管理などでよく使われる重要な知識です。
2. array_shift()とは?
array_shift()は、PHPで配列の最初の要素を取り出すための関数です。関数とは、決まった処理を簡単に使えるようにした便利な道具のことです。array_shift()を使うと、配列の先頭にある値を取り出し、その値は配列から削除されます。
たとえば、順番待ちの行列を考えてみましょう。お店の前に並んでいる人がいて、先頭の人から順番に案内されます。先頭の人が案内されると、その人は行列から抜けて、次の人が先頭になります。PHPのarray_shift()もこれと同じように、配列の先頭を取り出して、残りの要素を前に詰めます。
PHPで配列の最初の値を確認するだけなら、$array[0]を使う方法もあります。しかし、array_shift()は取り出すだけでなく、配列から削除する点が特徴です。そのため、先頭から順番に処理していきたい場合に便利です。
$fruits = ["りんご", "みかん", "ぶどう"];
$first = array_shift($fruits);
echo $first;
りんご
この例では、配列の最初にあるりんごが取り出されます。取り出された値は変数$firstに入り、配列$fruitsからは削除されます。
3. array_shift()を使った後の配列の中身
array_shift()で最初の要素を取り出すと、配列の中身が変わります。ここが初心者の方にとって大切なポイントです。配列の先頭を取り出すだけではなく、元の配列からその要素がなくなるため、処理の前後で配列の状態が変化します。
たとえば、配列に3つの果物が入っている場合、array_shift()を1回使うと、最初の果物が取り出され、残りの2つだけが配列に残ります。このように、配列を順番に消費していくような使い方ができます。
$fruits = ["りんご", "みかん", "ぶどう"];
$first = array_shift($fruits);
print_r($fruits);
Array
(
[0] => みかん
[1] => ぶどう
)
この結果を見ると、最初にあったりんごが配列からなくなり、みかんとぶどうだけが残っていることがわかります。また、数値配列では添字が振り直されます。もともと1番目だったみかんが、新しく0番目になります。
PHPで配列の中身を確認したいときは、print_r()を使うと便利です。print_r()は、配列の中身を見やすく表示するための関数です。学習中やエラー確認のときに役立ちます。
4. array_shift()と$array[0]の違い
PHPで配列の最初の要素を扱う方法として、array_shift()と$array[0]があります。どちらも先頭の値に関係しますが、意味が違います。$array[0]は配列の最初の要素を参照するだけです。参照とは、中身を見るという意味です。配列から削除はされません。
一方で、array_shift()は最初の要素を取り出し、元の配列から削除します。つまり、先頭の値を見たいだけなら$array[0]、先頭の値を取り出して配列からなくしたいならarray_shift()を使います。
| 書き方 | 役割 | 配列の中身 |
|---|---|---|
$array[0] |
最初の要素を見る | 変わらない |
array_shift($array) |
最初の要素を取り出す | 先頭の要素が削除される |
$numbers = [10, 20, 30];
echo $numbers[0] . "\n";
print_r($numbers);
10
Array
(
[0] => 10
[1] => 20
[2] => 30
)
この例では、$numbers[0]で最初の値を表示していますが、配列の中身は変わっていません。PHP初心者の方は、先頭の値を確認したいのか、先頭の値を取り除きたいのかを考えて使い分けましょう。
5. 順番待ちの処理でarray_shift()を使う
array_shift()は、順番待ちのような処理に向いています。先に入ったものから順番に取り出す処理は、プログラミングでよく登場します。たとえば、受付番号の順番、作業リストの順番、タスク管理、メール送信の順番、注文処理の順番などです。
先頭から1つずつ取り出して処理したい場合、array_shift()を使うと自然な流れで書けます。配列の最初の値を取り出し、処理が終わると次の値が先頭になります。これを繰り返すことで、配列の内容を前から順番に処理できます。
$tasks = ["メール確認", "資料作成", "会議準備"];
$task = array_shift($tasks);
echo "最初に行う作業は" . $task . "です";
最初に行う作業はメール確認です
この例では、作業一覧の配列から最初の作業を取り出しています。メール確認が先頭にあるため、最初に行う作業として表示されます。PHPで作業リストや処理順を管理する場合、array_shift()はわかりやすく使える関数です。
6. while文とarray_shift()を組み合わせる
array_shift()は、while文と組み合わせることで、配列の先頭から順番に取り出す処理を作れます。while文とは、条件が成り立っている間、同じ処理を繰り返す制御構造です。制御構造とは、プログラムの流れを決める仕組みです。
配列に値がある間だけ、先頭から1つずつ取り出して表示するような処理は、初心者の学習にも実用にも向いています。配列が空になるまで繰り返すため、順番に処理したいデータに使えます。
$names = ["田中", "佐藤", "鈴木"];
while (!empty($names)) {
$name = array_shift($names);
echo $name . "さんを案内しました\n";
}
田中さんを案内しました
佐藤さんを案内しました
鈴木さんを案内しました
empty()は、配列や変数が空かどうかを確認する関数です。!empty($names)は、配列が空ではない間という意味です。配列に値が残っている間は、array_shift()で先頭の名前を取り出して表示します。
このように、PHPの配列操作、while文、array_shift関数を組み合わせると、順番待ちの処理やリスト処理を作りやすくなります。
7. 空の配列でarray_shift()を使う場合
array_shift()を使うときは、配列が空の場合も意識する必要があります。空の配列とは、要素が1つも入っていない配列のことです。空の配列に対してarray_shift()を使うと、取り出す要素がないためnullが返ります。
nullとは、値が存在しないことを表す特別な値です。初心者の方は、空っぽを表すものだと考えるとわかりやすいです。配列に値があると思って処理を書いていると、空だったときに思った通りに表示されないことがあります。そのため、事前にempty()で確認すると安心です。
$items = [];
if (empty($items)) {
echo "配列に要素がありません";
} else {
$item = array_shift($items);
echo $item;
}
配列に要素がありません
この例では、配列が空かどうかを先に確認しています。配列に要素がない場合は、array_shift()を使わずにメッセージを表示しています。PHPで安全に配列操作をするためには、配列の中身があるか確認する習慣が大切です。
8. array_shift()とarray_pop()の違い
PHPの配列操作には、array_shift()と似た関数としてarray_pop()があります。array_shift()は配列の最初の要素を取り出します。一方で、array_pop()は配列の最後の要素を取り出します。
たとえば、行列の先頭から案内するような処理にはarray_shift()が向いています。反対に、積み上げた書類を上から取るように、最後に入れたものから取り出したい場合はarray_pop()が向いています。
| 関数 | 取り出す位置 | イメージ |
|---|---|---|
array_shift() |
最初の要素 | 行列の先頭から取り出す |
array_pop() |
最後の要素 | 最後に入れたものから取り出す |
$colors = ["赤", "青", "緑"];
$first = array_shift($colors);
$last = array_pop($colors);
echo "最初は" . $first . "\n";
echo "最後は" . $last;
最初は赤
最後は緑
この例では、最初に赤を取り出し、最後に緑を取り出しています。配列のどちら側から取り出したいのかによって、使う関数を選びましょう。PHPの配列操作では、このような関数の違いを理解しておくと、目的に合った処理を書きやすくなります。
9. PHP開発でarray_shift()が役立つ場面
array_shift()は、PHPの実際の開発でもさまざまな場面で役立ちます。たとえば、配列に入っているデータを先頭から順番に処理したい場合、最初の値だけを特別に扱いたい場合、順番待ちのリストを管理したい場合などです。
Webアプリケーションでは、フォームから送られた複数の値を順番に処理する、商品一覧の先頭の商品を取り出す、作業リストの最初のタスクを表示する、読み込んだデータを前から順に処理するなどの場面があります。PHPの配列は、多くのデータをまとめて扱うため、先頭の要素を取り出す処理を覚えておくと便利です。
初心者の方は、まず配列を作る、array_shift()で最初の要素を取り出す、取り出した後の配列をprint_r()で確認する、という流れで練習すると理解しやすくなります。特に、array_shift()は元の配列を変更する関数なので、処理後の配列がどう変わるのかを確認することが大切です。
PHPで配列操作を学ぶと、一覧表示、データ処理、フォーム処理、検索結果の加工、管理画面の作成など、さまざまな機能を作る力につながります。array_shift()は、配列の最初の要素を取り出して削除する基本的な関数です。先頭から順番に処理したいとき、最初の値だけを使いたいとき、配列の流れを管理したいときに活用できます。