【PHP】Lesson4-3:配列の要素を追加・削除しよう

ながみえ

一つ前のレッスンでは 連想配列 について学習しました。

今回は 配列の要素追加/削除 について見ていきましょう。

Lesson1:基礎文法編
Lesson2:制御構造編
Lesson3:関数編
Lesson4:データ構造編

 ・Lesson4-1:配列の基本を理解しよう
 ・Lesson4-2:キーが文字列の配列を理解しよう
 ・Lesson4-3:配列の要素を追加/削除しよう ◁今回はココ
 ・Lesson4-4:配列を調査しよう
 ・Lesson4-5:配列を操作しよう
 ・Lesson4-6:配列を並び替えよう
 ・Lesson4-7:配列の多次元化を理解しよう
 ・確認問題4-1:ナインゲームを作ろう
 ・確認問題4-2:宝探しゲームを作ろう
 ・確認問題4-3:マルバツゲームを作ろう
Lesson5:クラス

<<前のページ

学習記事一覧

次のページ>>

配列の要素追加・削除

PHPで配列を扱う際に欠かせないのが、要素の追加や削除といった操作です。

要素を増やしたり、不要な値を取り除いたりすることで、データの管理や加工が自由自在にできるようになります。

この記事では、配列に要素を追加・削除する基本的な方法から、array_spliceなど便利な関数の使い方、実践的な操作例まで初心者向けにわかりやすく解説します。

配列操作の基本をしっかり身につければ、より柔軟で実用的なPHPプログラムを作成できるようになります。

ぜひ本文を読み進めて、配列の扱い方をステップアップさせましょう!

配列の要素追加・削除|組み込み関数の使い方

配列の要素を操作する方法としては、これまで学習してきたインデックスを指定するやり方の他に、組み込み関数を使用する方法があります。

配列の要素追加|array_push()関数の使い方

配列に新しい要素を追加するには、配列のインデックスを指定して追加するか、array_push()関数 を使用する方法があります。

array_push()関数の基本構文は以下の通りです。

array_push(配列, 値);	// 配列末尾に4と5を追加

使用例は以下の通りです。

// 例1: array_push()を使用
$array = [1, 2, 3];
array_push($array, 4, 5);	// 配列末尾に4と5を追加
print_r($array);			// [1, 2, 3, 4, 5]

// 例2: 直接追加
$array[] = 6;				// 配列末尾に6を追加
print_r($array);			// [1, 2, 3, 4, 5, 6]

配列の要素削除|array_pop()関数とarray_shift()関数の使い方

配列から要素を削除する方法として、array_pop()関数array_shift()関数 を使用する方法を紹介します。

それぞれ、配列の末尾か先頭の値を削除することができます。

$array = [1, 2, 3, 4, 5];
array_pop($array);		// array_pop()関数で末尾を削除
print_r($array);		// [1, 2, 3, 4]

array_shift($array);	// array_shift()関数で先頭を削除
print_r($array);		// [2, 3, 4]

便利な配列操作関数|array_splice()関数の使い方

array_splice()関数 は配列の一部を削除したり、別の配列の値で置き換えたり、値を挿入したりできる便利な関数です。

基本構文は以下の通りです。

array_splice(操作する配列, 操作開始位置, 削除する要素数, 挿入する値 = [])

実際の使用例を見ていきましょう。

array_splice()関数で配列の要素を削除する方法

要素を削除する例は以下の通りです。

$array = [1, 2, 3, 4];
array_splice($array, 1, 2);	// インデックス1から2つ削除
print_r($array);			// [1, 4]

array_splice($array, 1, 2);」は、「配列のインデックス1の位置から、2つの要素を削除する」という意味になります。

array_splice()関数で配列に要素を挿入する方法

要素を挿入する例は以下の通りです。

$array = [1, 2, 3];
array_splice($array, 1, 0, [99]);	// 何も削除せずインデックス1に99を挿入
print_r($array);					// [1, 99, 2, 3]

array_splice($array, 1, 0, [99]);」は、「配列の、インデックス1の位置から、0個の要素を削除し、99を挿入する」という意味になります。

array_splice()関数で配列の要素を置き換える方法

要素を置き換える例は以下の通りです。

$array = [1, 2, 3, 4];
array_splice($array, 1, 2, [10, 11]);	// 2つ削除して2つ挿入
print_r($array);						// [1, 10, 11, 4]

array_splice($array, 1, 2, [10, 11]);」は、「配列の、インデックス1の位置から、2個の要素を削除し、10と11を挿入する」という意味になります。

このように、array_splice()関数は値の「挿入」「削除」「置換」に使える万能関数です。

配列の一部を柔軟に編集したいときに便利に使用できますので、活用していきましょう。

まとめ|配列の要素追加・削除の基本を身につけよう

この記事では、PHPの配列に要素を追加・削除する基本的な方法や、array_push()、array_pop()、array_shift()といった組み込み関数、さらにarray_splice()関数を使った高度な配列操作まで解説しました。

これらの知識を身につけることで、配列の中身を自在に編集したり、実践的なデータ処理がスムーズに行えるようになります。

次のレッスンでも新しい配列操作を学びながら、PHPのスキルをどんどん高めていきましょう!

演習問題|配列要素の追加・削除を練習しよう

PHPで配列を操作するプログラムを作成し、要素の追加や削除の方法を学びましょう。

初期化した配列に対して以下の操作を行い、結果を確認してください。

配列の要素を末尾や先頭に追加する方法、特定の位置の要素を削除・置き換える方法を実践します。

この演習の要件

以下の要件に従ってコードを完成させてください。

  1. 配列の初期化:
    • fruitsという名前の配列を作成し、以下の要素を含むように初期化すること: 「りんご」「バナナ」「みかん」
  2. 要素の追加:
    • 配列の末尾に「ぶどう」を追加すること。
    • 配列の先頭に「さくらんぼ」を追加すること。
  3. 要素の削除:
    • 配列の末尾から要素を1つ削除すること。
    • 配列の先頭から要素を1つ削除すること。
  4. 特定の位置の操作:
    • 配列のインデックス1の要素を削除し、代わりに「パイナップル」を追加すること。
  5. 結果の出力:
    • 各操作後に配列の内容を出力し、正しい結果が得られることを確認すること。

ただし、以下のような実行結果となること。

初期の配列: りんご, バナナ, みかん
末尾に'ぶどう'を追加: りんご, バナナ, みかん, ぶどう
先頭に'さくらんぼ'を追加: さくらんぼ, りんご, バナナ, みかん, ぶどう
末尾の要素を削除: さくらんぼ, りんご, バナナ, みかん
先頭の要素を削除: りんご, バナナ, みかん
インデックス1の要素を'パイナップル'に置き換え: りんご, パイナップル, みかん

解き方のヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

Q
ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)

1:配列$fruitsを初期化し、要素に「りんご」「バナナ」「みかん」を設定
2:「初期の配列: 」と配列$fruitsを文字列結合して出力
3:array_push関数を使用して、配列$fruitsの末尾に「ぶどう」を追加
4:「末尾に’ぶどう’を追加: 」と配列$fruitsを文字列結合して出力
5:array_unshift関数を使用して、配列$fruitsの先頭に「さくらんぼ」を追加
6:「先頭に’さくらんぼ’を追加: 」と配列$fruitsを文字列結合して出力
7:array_pop関数を使用して、配列$fruitsの末尾の要素を削除
8:「末尾の要素を削除: 」と配列$fruitsを文字列結合して出力
9:array_shift関数を使用して、配列$fruitsの先頭の要素を削除
10:「先頭の要素を削除: 」と配列$fruitsを文字列結合して出力
11:array_splice関数を使用して、配列$fruitsのインデックス1の要素を削除し、「パイナップル」を挿入
12:「インデックス1の要素を’パイナップル’に置き換え: 」と配列$fruitsを文字列結合して出力

Q
ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

<?php
// 配列の要素の追加と削除を学ぶ練習問題

// 配列を初期化
/*【穴埋め問題1】ここで$fruits配列を初期化し、要素に「りんご」「バナナ」「みかん」を設定してください。*/

echo "初期の配列: " . implode(", ", $fruits) . PHP_EOL;

// 配列の末尾に要素を追加する
// array_push()は、配列の末尾に要素を追加する関数です
/*【穴埋め問題2】ここでarray_push関数を使って、配列$fruitsの末尾に「ぶどう」を追加してください。*/

echo "末尾に'ぶどう'を追加: " . implode(", ", $fruits) . PHP_EOL;

// 配列の先頭に要素を追加する
// array_unshift()は、配列の先頭に要素を追加する関数です
/*【穴埋め問題3】ここでarray_unshift関数を使って、配列$fruitsの先頭に「さくらんぼ」を追加してください。*/

echo "先頭に'さくらんぼ'を追加: " . implode(", ", $fruits) . PHP_EOL;

// 配列の末尾の要素を削除する
// array_pop()は、配列の末尾から要素を削除する関数です
/*【穴埋め問題4】ここでarray_pop関数を使って、配列$fruitsの末尾の要素を削除してください。*/

echo "末尾の要素を削除: " . implode(", ", $fruits) . PHP_EOL;

// 配列の先頭の要素を削除する
// array_shift()は、配列の先頭から要素を削除する関数です
/*【穴埋め問題5】ここでarray_shift関数を使って、配列$fruitsの先頭の要素を削除してください。*/

echo "先頭の要素を削除: " . implode(", ", $fruits) . PHP_EOL;

// 任意の位置の要素を削除・追加する
// array_splice()は、配列の指定した位置に要素を挿入したり削除したりできます
/*【穴埋め問題6】ここでarray_splice関数を使って、インデックス1の要素を削除し、「パイナップル」を挿入してください。*/

echo "インデックス1の要素を'パイナップル'に置き換え: " . implode(", ", $fruits) . PHP_EOL;

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。

演習問題の答え合わせ

この問題の正解コードとその解説は以下の通りです。

クリックして開いて確認してください。

Q
正解コード
<?php

// 配列を初期化
$fruits = ["りんご", "バナナ", "みかん"];
echo "初期の配列: " . implode(", ", $fruits) . PHP_EOL;

// 配列の末尾に要素を追加する
// array_push()は、配列の末尾に要素を追加する関数です
array_push($fruits, "ぶどう");
echo "末尾に'ぶどう'を追加: " . implode(", ", $fruits) . PHP_EOL;

// 配列の先頭に要素を追加する
// array_unshift()は、配列の先頭に要素を追加する関数です
array_unshift($fruits, "さくらんぼ");
echo "先頭に'さくらんぼ'を追加: " . implode(", ", $fruits) . PHP_EOL;

// 配列の末尾の要素を削除する
// array_pop()は、配列の末尾から要素を削除する関数です
array_pop($fruits);
echo "末尾の要素を削除: " . implode(", ", $fruits) . PHP_EOL;

// 配列の先頭の要素を削除する
// array_shift()は、配列の先頭から要素を削除する関数です
array_shift($fruits);
echo "先頭の要素を削除: " . implode(", ", $fruits) . PHP_EOL;

// 任意の位置の要素を削除・追加する
// array_splice()は、配列の指定した位置に要素を挿入したり削除したりできます
array_splice($fruits, 1, 1, ["パイナップル"]);
// 上記はインデックス1の要素を削除し、代わりに'パイナップル'を挿入しています
echo "インデックス1の要素を'パイナップル'に置き換え: " . implode(", ", $fruits) . PHP_EOL;
Q
正解コードの解説

コードをブロックごとに分割して解説します。

配列の初期化

$fruits = ["りんご", "バナナ", "みかん"];
echo "初期の配列: " . implode(", ", $fruits) . PHP_EOL;
  • $fruits という変数に配列を代入しています。この配列には初期状態で「りんご」「バナナ」「みかん」の3つの要素が含まれています。
  • implode() 関数は、配列の要素を文字列として連結するための関数です。ここでは ", " を区切り文字として使用しています。
  • PHP_EOL は改行を表す特殊な定数で、コードを動かす環境に応じた適切な改行を挿入します。

配列の末尾に要素を追加

array_push($fruits, "ぶどう");
echo "末尾に'ぶどう'を追加: " . implode(", ", $fruits) . PHP_EOL;
  • array_push() 関数は、指定した要素(ここでは「ぶどう」)を配列の末尾に追加します。
  • この操作後、$fruits の内容は「りんご」「バナナ」「みかん」「ぶどう」となります。

配列の先頭に要素を追加

array_unshift($fruits, "さくらんぼ");
echo "先頭に'さくらんぼ'を追加: " . implode(", ", $fruits) . PHP_EOL;
  • array_unshift() 関数は指定した要素(ここでは「さくらんぼ」)を配列の先頭に追加します。
  • この操作後、$fruits の内容は「さくらんぼ」「りんご」「バナナ」「みかん」「ぶどう」となります。

配列の末尾の要素を削除

array_pop($fruits);
echo "末尾の要素を削除: " . implode(", ", $fruits) . PHP_EOL;
  • array_pop() 関数は、配列の末尾にある要素を1つ削除します。
  • この操作後、$fruits の内容は「さくらんぼ」「りんご」「バナナ」「みかん」となります。

配列の先頭の要素を削除

array_shift($fruits);
echo "先頭の要素を削除: " . implode(", ", $fruits) . PHP_EOL;
  • array_shift() 関数は、配列の先頭にある要素を1つ削除します。
  • この操作後、$fruits の内容は「りんご」「バナナ」「みかん」となります。

任意の位置の要素を削除・置き換え

array_splice($fruits, 1, 1, ["パイナップル"]);
echo "インデックス1の要素を'パイナップル'に置き換え: " . implode(", ", $fruits) . PHP_EOL;
  • array_splice() 関数は、配列の特定の位置にある要素を削除したり、新しい要素を挿入したりするための関数です。
  • ここでは、$fruits 配列のインデックス1の要素(「バナナ」)を削除し、「パイナップル」を挿入しています。
  • この操作後、$fruits の内容は「りんご」「パイナップル」「みかん」となります。
もっと分かりやすい学習サイトにするために

この記事を読んで「ここが分かりにくかった」「ここが難しかった」等の意見を募集しています。

世界一わかりやすいPHP学習サイトにするため、ぜひ 問い合わせフォーム からご意見下さい。

<<前のページ

学習記事一覧

次のページ>>

記事URLをコピーしました