PHP【 配列 】配列からデータを削除

PHP 配列 削除

配列は、1 つの変数や定数で複数の値を格納できる 便利なデータ構造です。
今回は PHP で配列からデータを削除する方法について紹介したいと思います。
配列の作成方法や追加方法については以下の記事をご参照下さい。
PHP【 配列 】複数の値を保持するデータ構造
PHP【 配列 】配列にデータを追加

尚、本サイトでは XAMPP( ザンプ )という開発環境を使用しています。
XAMPP のインストール方法や起動方法については以下の記事をご参照下さい。
PHP【 開発環境 】XAMPP インストール
PHP【 開発環境 】XAMPP の使い方

最終更新日:2019年1月30日

目次

1.array_splice で特定の値を削除
2.array_diff で特定の値を削除
3.unset で特定又は全ての値を削除
4.array_pop で最後の値を削除
5.array_shift で先頭の値を削除
6.配列から値を削除するサンプル
 

1.array_splice で特定の値を削除

 
PHP で 配列を作成後、特定の値を削除する場合は array_splice 関数を使用します。
 

array_splice ( 配列, インデックス番号, 個数 )

配列から特定の値を削除する場合は、通常 array_splice 関数の第 3 引数まで指定して 次のように記述します。

array_splice ( $array, 削除開始位置のインデックス番号, 削除する数 );

下記は 5 つの値が格納された配列変数 $name から、2 番目と 3 番目の値を削除しているサンプルです。

$name = array("青山", "井川", "植木", "江口", "大竹");

array_splice($name, 1, 2);

インデックス番号は 0 から割り当てられるので 2 番目の値のインデックス番号は 1 となり、「 array_splice($name, 1, 2); 」で 変数 $name に格納されている 2 番目の値から順に 値が 2 つ削除されます。

上記のサンプルで値を削除した結果、配列変数 $name には「 青山 」「 江口 」「 大竹 」がこの順番で格納され、0 から 2 までのインデックス番号が割り当てられます。
 
 

array_splice ( 配列, インデックス番号 )

array_splice 関数に 第 2 引数までを指定して削除を行う方法もあります。
この場合は、第 2 引数に指定したインデックス番号以降の値が全て削除されます。

array_splice ( $array, 削除開始位置のインデックス番号 );

下記は 5 つの値が格納された配列変数 $name から、3 番目以降の値を全て削除しているサンプルです。

$name = array("青山", "井川", "植木", "江口", "大竹");

array_splice($name, 2);

上記のサンプルで値を削除した結果、配列変数 $name には「 青山 」「 井川 」のみが格納されます。

▲目次へ戻る

 

2.array_diff で特定の値を削除

 
array_diff 関数でも 特定の値を削除することができます。
array_diff 関数は、次のように削除する値を直接指定して使用します。

$after_array = array_diff ( $array, array( 削除する値 ) );

$after_array = array_values($after_array);

array_diff 関数で配列の値を削除すると、各データのインデックス番号は削除前後で変化しないため、削除した値を格納していたインデックス番号が欠けたままとなってしまいます。
そこで、上記のように array_values 関数を使用して後続データに続きのインデックス番号を割り当てます。

下記は 配列変数 $name から、”植木” という値を削除しているサンプルです。

$name = array("青山", "井川", "植木", "江口", "大竹");

$after_name = array_diff($name, array("植木"));

$after_name = array_values($after_name);

「 $after_name = array_diff ($name, array(“植木”)); 」の直後は、配列変数 $after_name の インデックス番号は [ 0 ][ 1 ][ 3 ][ 4 ] となりますが、「 $after_name = array_values($after_name); 」によって インデックス番号 2 以降が新たに割り当てられ、[ 0 ][ 1 ][ 2 ][ 3 ] となります。

▲目次へ戻る

 

3.unset で特定又は全ての値を削除

 
unset 関数を使用すると、特定の値 又は 全ての値を削除することができます。
 

unset で特定の値を削除

unset 関数で特定の値を削除する場合は、削除する値を次のように指定して使用します。

unset ( $array [ インデックス番号 ] );

$array = array_values($array);

unset 関数も、array_diff 関数と同様に、各データのインデックス番号は削除前後で変化せず、削除した値を格納していたインデックス番号が欠けたままとなってしまうため、後続データの整合性を保つために array_values 関数を使用してインデックス番号を整えます。

下記は 配列変数 $name から、3 番目の値を削除しているサンプルです。

$name = array("青山", "井川", "植木", "江口", "大竹");

unset($name[2]);

$name = array_values($name);

「 unset($name[2]); 」の直後は、配列変数 name の インデックス番号は [ 0 ][ 1 ][ 3 ][ 4 ] となりますが、「 $name = array_values($name); 」によって インデックス番号 2 以降が新たに割り当てられ、[ 0 ][ 1 ][ 2 ][ 3 ] となります。
 
 

unset で全ての値を削除

unset 関数の引数に 配列変数そのものを指定すると、配列に格納された全ての値を削除することができます。

unset ( $array );

下記は 配列変数 $name の中の値を全て削除しているサンプルです。

$name = array("青山", "井川", "植木", "江口", "大竹");

unset($name);

▲目次へ戻る

 

4.array_pop で最後の値を削除

 
array_pop 関数を使用すると、配列の最後の値を削除することができます。

array_pop ( $array ) ;

下記は、配列変数 $name に格納されている中でインデックス番号が最大の値を削除しているサンプルです。

$name = array("青山", "井川", "植木", "江口", "大竹");

array_pop($name);

上記を実行すると、配列変数 $name 内の最後の値 “大竹” が削除されます。

▲目次へ戻る

 

5.array_shift で先頭の値を削除

 
array_shift 関数を使用すると、配列の先頭の値を削除することができます。

array_shift ( $array ) ;

下記は、配列変数 $name に格納されている中でインデックス番号が 0 の値を削除しているサンプルです。

$name = array("青山", "井川", "植木", "江口", "大竹");

array_shift($name);

上記を実行すると、配列変数 $name 内の先頭の値 “青山” が削除されます。

▲目次へ戻る

 

6.配列から値を削除するサンプル

 
配列から値を削除して出力してみます。

下記のようなソースファイルを作成して ブラウザからアクセスすると、次のような表示になります。
( ソースファイルの作成方法についてはソースファイルを作成を、サーバの起動方法等についてはサーバを起動を、それぞれご参照下さい。)

<?php

  $name = array("青山", "井川", "植木", "江口", "大竹");

  array_splice($name, 1, 1);
  print_r($name);
  echo "<br>";

  $after_name = array_diff($name, array("江口"));
  $after_name = array_values($after_name);
  print_r($name);
  echo "<br>";
  print_r($after_name);

?>
PHP 配列 削除 サンプル

array_diff 関数を使用して値を削除しても、元の配列変数 $name の内容は変わらない点に注意が必要です。

▲目次へ戻る

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です