PHPで配列の先頭に要素を追加!array_unshift()の使い方と動作
生徒
「PHPで、配列の最初に新しい値を追加することはできますか?」
先生
「PHPでは、array_unshift()を使うと、配列の先頭に要素を追加できます。」
生徒
「先頭に追加すると、もともと入っていた値はどうなるんですか?」
先生
「もともとの要素は後ろへずれて、追加した値が配列の最初に入ります。」
生徒
「順番を大事にしたい配列で使えそうですね。」
先生
「その通りです。配列の基本から、array_unshift()の使い方と動作を見ていきましょう。」
1. PHPの配列とは?
PHPの配列とは、複数のデータを1つの変数にまとめて保存できる仕組みです。通常の変数は1つの値を入れる箱のようなものですが、配列は複数の値を順番に入れられる棚のようなものです。たとえば、商品名の一覧、ユーザー名の一覧、点数の一覧、カテゴリの一覧、注文内容など、複数の値をまとめて扱いたいときに配列を使います。
プログラミング未経験の方は、配列を買い物かごや順番待ちの列のように考えるとわかりやすいです。買い物かごには、りんご、みかん、ぶどうのように複数の商品を入れられます。PHPの配列にも、同じように複数の値を入れて、順番に取り出したり、追加したり、削除したりできます。
PHPの数値配列では、配列の中に入っている要素に番号が付きます。この番号を添字と呼びます。添字とは、配列の何番目に入っているかを表す番号です。PHPでは最初の要素の添字は1ではなく0から始まります。つまり、最初の要素は0番目、次の要素は1番目、さらに次は2番目になります。
配列の基本を理解すると、array_unshift()の動きも理解しやすくなります。PHPの配列操作は、一覧表示、フォーム処理、管理画面、商品リスト、予約リスト、タスク管理など、Webアプリケーション開発でよく使われる大切な知識です。
2. array_unshift()とは?
array_unshift()は、PHPで配列の先頭に新しい要素を追加するための関数です。関数とは、決まった処理を簡単に使えるようにした便利な道具のことです。array_unshift()を使うと、配列の最初に値を入れることができます。
たとえば、順番待ちの列の一番前に特別な案内を追加するようなイメージです。もともと並んでいた人たちは後ろにずれて、新しく追加された人が先頭になります。PHPの配列でも同じように、先頭に要素を追加すると、元の要素は後ろへ移動します。
配列の最後に要素を追加する場合はarray_push()や$array[]を使うことがあります。一方、配列の先頭に追加したい場合はarray_unshift()を使います。どこに追加したいのかによって、使う関数が変わります。
$fruits = ["みかん", "ぶどう"];
array_unshift($fruits, "りんご");
print_r($fruits);
Array
(
[0] => りんご
[1] => みかん
[2] => ぶどう
)
この例では、配列$fruitsの先頭にりんごを追加しています。もともと0番目だったみかんは1番目になり、ぶどうは2番目になります。配列の先頭に要素を追加したい場合に、array_unshift()はとても便利です。
3. array_unshift()の基本的な書き方
array_unshift()の基本的な書き方は、最初に追加したい配列を指定し、その後に先頭へ追加したい値を書きます。PHPでは、関数の中に渡す値のことを引数と呼びます。引数とは、関数に処理してもらうために渡す材料のようなものです。
array_unshift($array, $value)と書くと、$arrayの先頭に$valueが追加されます。追加後の配列は、元の配列そのものが変更されます。つまり、新しい配列を別に作るのではなく、指定した配列の中身が変わります。
| 書き方 | 意味 |
|---|---|
array_unshift($array, "追加する値") |
配列の先頭に1つの要素を追加する |
array_unshift($array, "値1", "値2") |
配列の先頭に複数の要素を追加する |
$numbers = [20, 30, 40];
array_unshift($numbers, 10);
print_r($numbers);
Array
(
[0] => 10
[1] => 20
[2] => 30
[3] => 40
)
この例では、数値配列の先頭に10を追加しています。追加後は、10が0番目になり、もともとの値は1つずつ後ろにずれます。PHPの数値配列では、先頭に要素を追加すると添字が振り直されるため、順番が変わることを理解しておきましょう。
4. 複数の要素を先頭に追加する
array_unshift()では、1つの要素だけでなく、複数の要素をまとめて先頭に追加することもできます。たとえば、配列の先頭に新しいカテゴリを2つ追加したい場合や、タスク一覧の最初に優先作業を複数追加したい場合に使えます。
複数の要素を追加するときは、array_unshift()の第2引数以降に追加したい値を順番に書きます。追加した値は、指定した順番のまま配列の先頭に入ります。
$tasks = ["資料作成", "会議準備"];
array_unshift($tasks, "メール確認", "予定確認");
print_r($tasks);
Array
(
[0] => メール確認
[1] => 予定確認
[2] => 資料作成
[3] => 会議準備
)
この例では、メール確認と予定確認を配列の先頭に追加しています。もともと入っていた資料作成と会議準備は後ろへ移動します。PHPで作業順や表示順を調整したい場合に、array_unshift()はとても使いやすい関数です。
5. array_unshift()の戻り値を理解する
array_unshift()は、要素を追加した後の配列の要素数を返します。戻り値とは、関数を実行した結果として返ってくる値のことです。配列そのものを返すわけではなく、追加後に配列の中に何個の要素があるかを返します。
初心者の方は、array_unshift()は配列を変更する関数であり、戻り値は配列ではなく要素数だと覚えておくと安心です。配列の中身を確認したい場合は、print_r()を使って表示します。
$colors = ["青", "緑"];
$count = array_unshift($colors, "赤");
echo "要素数は" . $count . "個です\n";
print_r($colors);
要素数は3個です
Array
(
[0] => 赤
[1] => 青
[2] => 緑
)
この例では、配列の先頭に赤を追加した後、要素数として3が返されています。PHPの配列操作では、関数の戻り値が何を表しているかを確認することが大切です。array_unshift()の場合は、戻り値をそのまま配列として扱わないように注意しましょう。
6. array_unshift()とarray_push()の違い
PHPで配列に要素を追加する関数には、array_unshift()とarray_push()があります。名前は似ていますが、追加される位置が違います。array_unshift()は配列の先頭に要素を追加します。一方、array_push()は配列の最後に要素を追加します。
たとえば、先に表示したいお知らせをリストの先頭へ追加したい場合はarray_unshift()が向いています。反対に、新しい商品を一覧の最後へ追加したい場合はarray_push()や$array[]が向いています。PHPの配列操作では、先頭に追加するのか、末尾に追加するのかを考えて使い分けましょう。
| 関数 | 追加する位置 | 使う場面 |
|---|---|---|
array_unshift() |
配列の先頭 | 最初に表示したい値を追加する |
array_push() |
配列の最後 | 順番の最後に値を追加する |
$items = ["商品B"];
array_unshift($items, "商品A");
array_push($items, "商品C");
print_r($items);
Array
(
[0] => 商品A
[1] => 商品B
[2] => 商品C
)
この例では、array_unshift()で先頭に商品Aを追加し、array_push()で最後に商品Cを追加しています。結果として、商品A、商品B、商品Cの順番になります。PHP初心者の方は、先頭ならarray_unshift()、最後ならarray_push()と覚えるとわかりやすいです。
7. 添字が振り直される点に注意する
array_unshift()を数値配列に使うと、配列の添字が振り直されます。添字とは、配列の中で値が何番目にあるかを表す番号です。PHPの数値配列では、先頭に要素を追加すると、新しく追加された値が0番目になり、もともとの値は1番目、2番目へと後ろに移動します。
これは、順番を保ちながら配列を扱うための自然な動きです。ただし、添字の番号を使って特定の要素を管理している場合は注意が必要です。先頭に要素を追加すると、もともとの番号が変わるため、処理結果が想定と変わることがあります。
$scores = [80, 90];
array_unshift($scores, 70);
echo $scores[0] . "\n";
echo $scores[1] . "\n";
echo $scores[2];
70
80
90
この例では、先頭に70を追加したため、$scores[0]は70になります。もともと0番目だった80は1番目に移動しています。PHPで配列の添字を使うときは、array_unshift()によって番号が変わる点を覚えておきましょう。
8. 実用例としてお知らせ一覧の先頭に追加する
array_unshift()は、実際のWebサイトでお知らせ一覧やメッセージ一覧を扱うときにも便利です。たとえば、新しい重要なお知らせを一覧の最初に表示したい場合、配列の先頭に追加することで、画面の上に表示しやすくなります。
ユーザーは画面の上から順番に情報を見ることが多いため、重要な情報や新しく追加した情報を先頭に置くことは、見やすい画面作りにもつながります。PHPの配列操作を使うと、表示順を柔軟に調整できます。
$news = ["通常のお知らせ", "メンテナンス情報"];
array_unshift($news, "重要なお知らせ");
foreach ($news as $message) {
echo $message . "\n";
}
重要なお知らせ
通常のお知らせ
メンテナンス情報
この例では、重要なお知らせを配列の先頭に追加し、foreach文で順番に表示しています。foreach文とは、配列の中身を1つずつ取り出して処理するための繰り返し文です。PHPの配列とforeachを組み合わせると、一覧表示の処理を分かりやすく書けます。
9. PHP開発でarray_unshift()が役立つ場面
array_unshift()は、PHPの実際の開発でもさまざまな場面で役立ちます。たとえば、配列の先頭に初期値を追加したい場合、一覧の最初に特別な項目を追加したい場合、選択肢の先頭に未選択を追加したい場合、重要なお知らせを最初に表示したい場合などです。
Webアプリケーションでは、商品カテゴリの先頭に全てを追加する、検索条件の先頭に指定なしを追加する、タスク一覧の先頭に優先作業を追加する、メッセージ一覧の先頭に重要メッセージを追加するなど、先頭への追加が必要になることがあります。そのようなときにarray_unshift()を使うと、配列の順番を簡単に調整できます。
PHP初心者の方は、まず配列を作る、array_unshift()で先頭に値を追加する、print_r()で中身を確認する、という流れで練習すると理解しやすくなります。特に、追加後の添字がどう変わるのかを確認すると、数値配列の仕組みも理解しやすくなります。
PHPで配列操作を学ぶと、一覧表示、フォーム処理、検索条件の作成、管理画面、商品リスト、予約リスト、タスク管理など、さまざまな機能を作る力につながります。array_unshift()は、配列の先頭に要素を追加する基本的で実用的な関数です。配列の順番を変えたいとき、最初に表示したい値を追加したいときに活用できます。