column

ITコラム

mv13184

プログラミングノウハウ

2019.01.30

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

配列は、1 つの変数や定数で複数の値を格納できる 便利なデータ構造です。
今回は PHP で配列からデータを削除する方法について紹介したいと思います。

配列についてはこちらの記事もご参照下さい。

PHP【 配列 】複数の値を保持するデータ構造
PHP【 配列 】配列にデータを追加
PHP【 配列 】配列からデータを削除(本ページ)
PHP【 配列 】count で要素数を取得
PHP【 配列 】配列のソート
PHP【 連想配列 】キーでデータを特定
PHP【 多次元配列 】配列の中に配列
PHP【 配列 】配列内のデータ検索
PHP【 配列 】要素を比較
PHP【 配列 】配列の結合
PHP【 配列 】in_array で値の存在チェック
PHP【 配列 】array_map で一括処理
PHP【 配列 】キーを取得
PHP【 配列 】array_filter でフィルター
PHP【 配列 】array_column で同一キーの値を取得
PHP【 配列 】foreach でループ処理
PHP【 配列 】array_unique で重複した値を削除
PHP【 配列 】便利な関数

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

なお、未経験からITエンジニアへの就職に興味がある方や未経験からプログラミングを効率よく学びたいと考えている方は、就職率98.3%で受講料無料のプログラミングスクールプログラマカレッジもおすすめです。

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

1. array_splice で特定の値を削除

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

1-1. 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 までのインデックス番号が割り当てられます。
 
 

1-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 関数を使用すると、特定の値 又は 全ての値を削除することができます。
 

3-1. 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 ] となります。
 
 

3-2. 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 の内容は変わらない点に注意が必要です。

▲目次へ戻る

無料説明会

SHARE

最新記事

無料説明会に参加してみる

INTERNOUS,inc. All rights reserved.

無料オンライン説明会へ