PHP でキーではない値による配列の削除を実行する

Minahil Noor 2023年1月30日
  1. 関数 array_search()unset() を使って PHP でキーではない値による配列の削除を行う
  2. 関数 array_diff() を用いて、PHP でキーではなく値による配列の削除を行う
PHP でキーではない値による配列の削除を実行する

この記事では、PHP で配列から値を削除する方法を紹介します。

関数 array_search()unset() を使って PHP でキーではない値による配列の削除を行う

キーではなく、値で配列の削除を行う場合の主な手順は、まず値を求めることです。値を見つけてから削除することもできます。配列を削除するには、array_search() 関数を使って値を見つけ、unset() 関数を使って削除します。unset() 関数は変数をリセットします。これらの関数を利用するための正しい構文は以下の通りです。

array_search() の構文

array_search($value, $array, $strict);

組み込み関数 array_search() は 3つのパラメータがあります。パラメータの詳細は以下の通りです。

パラメータ 説明
$value 強制的 配列の中で検索したい値です。
$array 強制的 これは与えられた値を検索する配列です。
$strict 任意 このパラメータが True に設定されている場合、この関数は配列内の同一の要素も検索します。

この関数は与えられた値のキーを返します。

unset() の構文

unset($variable1, $variable2, ..., $variableN);

組み込み関数 unset() は複数のパラメータがあります。パラメータの詳細は以下の通りです。

パラメータ 説明
$variable1$variable2$variableN. 強制的 設定を解除したい変数またはデータ構造です。少なくとも 1つの変数は必須です。

この関数は何も返しません。

PHP における配列から値を削除する例

以下のプログラムは、これらの関数を使用して PHP で配列の削除を実行する方法を示しています。

<?php
$array = array("Rose","Lili","Jasmine","Hibiscus","Daffodil","Daisy");
echo("Array before deletion: \n");
var_dump($array);
$value = "Jasmine";
if (($key = array_search($value, $array)) !== false) {
    unset($array[$key]);
}
echo("Array after deletion: \n");
var_dump($array);
?>

出力:

Array before deletion: 
array(6) {
  [0]=>
  string(4) "Rose"
  [1]=>
  string(4) "Lili"
  [2]=>
  string(7) "Jasmine"
  [3]=>
  string(8) "Hibiscus"
  [4]=>
  string(8) "Daffodil"
  [5]=>
  string(5) "Daisy"
}
Array after deletion: 
array(5) {
  [0]=>
  string(4) "Rose"
  [1]=>
  string(4) "Lili"
  [3]=>
  string(8) "Hibiscus"
  [4]=>
  string(8) "Daffodil"
  [5]=>
  string(5) "Daisy"
}

関数 array_diff() を用いて、PHP でキーではなく値による配列の削除を行う

PHP では、array_diff() 関数を使って、キーではなく値による配列の削除を行うこともできます。この関数は、与えられた配列と別の配列の差分を計算します。この関数を使用するための正しい構文は以下の通りです。

構文

array_diff($array, $Arr1, $Arr2, ...,$ArrN);

関数 array_diff() は N+1 個のパラメータを受け付ける。パラメータの詳細は以下の通りです。

パラメータ 説明
$array 強制的 これは、値を削除するためのメインの配列です。
$Arr1$Arr2$ArrN. 強制的 削除したい配列です。この関数は配列との差分を取り、配列があれば配列から削除します。

配列の削除をキーではなく値で行うプログラムは以下のようになります。

<?php
$array = array("Rose","Lili","Jasmine","Hibiscus","Daffodil","Daisy");
echo("Array before deletion: \n");
var_dump($array);
$value = array("Jasmine");
$array = array_diff( $array, $value);
echo("Array after deletion: \n");
var_dump($array);
?>

出力:

Array before deletion: 
array(6) {
  [0]=>
  string(4) "Rose"
  [1]=>
  string(4) "Lili"
  [2]=>
  string(7) "Jasmine"
  [3]=>
  string(8) "Hibiscus"
  [4]=>
  string(8) "Daffodil"
  [5]=>
  string(5) "Daisy"
}
Array after deletion: 
array(5) {
  [0]=>
  string(4) "Rose"
  [1]=>
  string(4) "Lili"
  [3]=>
  string(8) "Hibiscus"
  [4]=>
  string(8) "Daffodil"
  [5]=>
  string(5) "Daisy"
}

関連記事 - PHP Array