【PHP入門】配列の要素を削除する方法まとめ

こんにちは!フリーエンジニアのヤマシタです。

PHPでは、さまざまな方法で配列を削除することができます。

この記事では、

・array_spliceで配列を要素を削除する方法
・unsetで配列の要素を削除する方法

という基本的な配列の削除方法から、

・array_diffで差分を残して削除する方法
・array_shiftで先頭の要素を削除する方法
・array_popで配列末尾を削除する方法

などの応用的な使い方に関しても解説していきます。

今回はそんな配列のさまざまな削除方法についてわかりやすく解説します!

array_spliceで配列を要素を削除する

array_spliceとは

array_splice関数は、指定した要素を削除するときに使用します。

書き方:

array_splice($削除対象配列名, 削除対象位置 [, 削除数])

引数:
第一引数には削除対象の配列を指定します。
第二引数には削除対象の位置を数値で指定します。
第三引数の削除数は、指定した値のみ要素を残して、後に続く要素をいくつ残すか指定します。
単純に第二引数で指定した数値のあとの要素数をいくつ削除するか指定するものではありません。

返り値:
削除後の配列を返します。

※array_splice関数は、削除後の配列の要素数が自動的に詰められます。後述するunset関数は削除後の配列の要素数が詰められません。

array_spliceの使い方

以下にarray_splice関数を使用した、配列の要素を削除するサンプルを紹介します。

サンプルプログラム

$fruits = ['apple', 'orange', 'melon', 'banana', 'pineapple'];

//配列の要素1を削除
$fruits = array_splice($fruits, 1);

print_r($fruits);

実行結果:

Array
(
    [0] => orange
    [1] => melon
    [2] => banana
    [3] => pineapple
)

array_splice関数を使用すれば、配列から指定した要素が削除できて、要素番号が詰められることがわかりますね!

unsetで配列の要素を削除する

unsetとは

unset関数は、指定した要素の値を削除します。

書き方:

unset($配列[要素番号] [, $配列[要素番号], …)

引数:
1つまたは複数の変数や配列の要素番号を指定します。

返り値:
unset関数には返り値はありません。

unsetの使い方

以下にunset関数を使用して配列の要素を指定して削除するサンプルを紹介します。

サンプルプログラム

$fruits = ['apple', 'orange', 'melon', 'banana', 'pineapple'];

//配列の要素1を削除
unset($fruits[2]);

print_r($fruits);

実行結果:

Array
(
    [0] => apple
    [1] => orange
    [3] => banana
    [4] => pineapple
)

unset関数を使用すれば、配列から指定した要素が削除できますが、先述したとおりarray_splice関数のように削除後に要素番号は詰められません。

そのため、要素数を詰めたい場合は後述する「配列の番号を詰める方法」を参照してください。

unsetでまとめて削除する

unset関数を使用すれば、ループで配列全体の値を取得し、特定の条件の要素のみ削除するときに便利です。

以下に配列の要素が’orange’、’melon’の場合は、値を削除する処理を記述します。

サンプルプログラム

$fruits = ['apple', 'orange', 'melon', 'banana', 'pineapple'];

for ($i = 0 ; $i < count($fruits); $i++){

  //指定した条件の文字列なら配列を削除
  if ($fruits[$i] == 'orange' or $fruits[$i] == 'melon'){
    unset($fruits[$i]);
  }
}

print_r($fruits);

実行結果:

Array
(
    [0] => apple
    [3] => banana
    [4] => pineapple
)

配列の番号を詰める方法

unset関数などで、特定の要素の配列を削除しても要素番号自体が変更されることはありません。

そのため、array_values関数を使用して、削除した配列の要素分番号を詰める処理が必要な場合もあります。

array_values関数は、配列の削除処理後に以下のように記述します。

書き方:

array  array_values($配列)

以下にunsetで配列の要素を削除したあとに、array_values関数で配列の番号を詰めるサンプルを紹介します。

サンプルプログラム

$fruits1 = ['apple', 'orange', 'melon', 'banana', 'pineapple'];

//配列の要素1を削除
unset($fruits1[2]);

$fruits2 = array_values($fruits1);

print_r($fruits2);

実行結果:

Array
(
    [0] => apple
    [1] => orange
    [2] => banana
    [3] => pineapple
)

array_diffで差分を残して削除する

array_diffとは

array_diff関数は、対象の配列1を他の配列2と比較し、配列1の値で他の配列に存在しない値以外を削除します。

書き方:

array_diff( 比較元の配列 , 比較対象の配列1 [, 比較対象の配列2... ] )


引数:

第一引数に比較元の配列を指定します。
第一引数以降は、比較対象の配列を1つまたは複数指定します。

返り値:
比較対象の配列に含まれない要素を配列で返します。

array_diffの使い方

以下にarray_diff関数を使用して、配列の要素を比較して差分のみ残すサンプルを記述します。

サンプルプログラム

$fruits1 = ['apple', 'orange', 'melon', 'banana', 'pineapple'];
$fruits2 = ['apple', 'orange', 'melon'];

//array_diffを使用して差分を取得する
$fruits_diff = array_diff($fruits1, $fruits2);

print_r($fruits_diff);

実行結果:

Array
(
    [3] => banana
    [4] => pineapple
)

サンプルでは配列fruits1とfruits2を作成し、array_diff関数で配列同士を比較して、一致した値がある場合は、削除を実施しています。

配列fruits1で設定した’banana’、’pineapple’は、fruits2には存在しないので削除されません。

array_shiftで先頭の要素を削除する

array_shiftとは

array_shift関数は先頭の要素を取り出す関数で、取り出された配列は先頭の要素が削除されます。

書き方:

array_shift( $配列 )

引数:
対象の配列を指定します。

返り値:
先頭の要素を取り出した値を返します。
引数の配列が空の場合や配列以外の変数の場合は、NULLを返します。

array_shiftの使い方

以下にarray_shift関数を使用して、配列の先頭の要素を削除するサンプルを記述します。

サンプルプログラム

$fruits = ['apple', 'orange', 'melon', 'banana', 'pineapple'];

//先頭の要素を削除する
array_shift($fruits);

print_r($fruits);

実行結果:

Array
(
    [0] => orange
    [1] => melon
    [2] => banana
    [3] => pineapple
)

array_popで配列末尾を削除する

array_popとは

array_pop関数は、引数に指定した配列の末尾の要素を削除します。

書き方:

array_pop($配列)

引数:
対象の配列を指定します。

返り値:
先頭の最後の要素を取り出した値を返します。
引数の配列が空の場合や配列以外の変数の場合は、NULLを返します。

array_popの使い方

以下にarray_pop関数を使用して、配列の末尾を削除する処理を記述します。

$fruits = ['apple', 'orange', 'melon', 'banana', 'pineapple'];

//配列末尾の値を削除する
array_pop($fruits);

print_r($fruits);

実行結果:

Array
(
    [0] => apple
    [1] => orange
    [2] => melon
    [3] => banana
)

array関数についてもっと詳しく知りたい方へ

配列を操作するさまざまな関数の使い方については、以下の記事にまとめていますので、ぜひ参考にしてくださいね!

・array_sum関数の使い方
・array_unique関数の使い方
・array_values関数の使い方
・array_keys関数の使い方
・array_filter関数の使い方
・array_map関数の使い方
・array_push関数の使い方
・array_key_exists関数の使い方
・array_pad関数の使い方
・implode関数の使い方
・配列の削除方法
・配列の検索方法
・よく使用する配列操作

【初心者必見!】PHPのよく使う配列操作の関数まとめ(array)
更新日 : 2018年9月4日

まとめ

ここでは配列を削除するさまざまな方法として、

・array_spliceで配列を要素を削除する方法
・unsetで配列の要素を削除する方法
・array_diffで差分を残して削除する方法
・array_shiftで先頭の要素を削除する方法
・array_popで配列末尾を削除する方法

について、解説しました。

配列を扱った処理は、実際の開発でもよく使用しますので、この機会にぜひ覚えておきましょう。

もし、配列の削除方法を忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

ヤマシタ

システムエンジニアとして10年勤務→フリーランスへ。現在は侍ブログ編集部として、これまでに200記事以上の記事を執筆。
大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。プログラミング初学者に向けてわかりやすく、ためになるコンテンツ作りを心がけています。

おすすめコンテンツ

いまならレッスン期間が2週間延長!この秋、プログラミングを学ぼう

転職成功で受講料0円!あなたもプログラミングを学んでエンジニアデビュー