PHP – 配列から特定の値を削除する

配列から特定の値を削除する方法になります。多次元配列には対応していませんのでご了承ください。

配列/連想配列から特定の値を削除する

例えば下記のような配列があるとします。キー指定ではなく、値を指定して削除したいと思います。ここでは配列で解説しますが、連想配列にも対応しています。

$array = [
	'default',
	'single',
	'archive',
	'aside',
	'footer',
	'header',
];

array_search()とunset()

array_search()unset()を組み合わせた方法です。array_search()で特定のキーワードを配列から探します。見つかった場合はキーを取得します。unset()で対象の値を削除しています。

unset($array[array_search('default', $array)]);

1つの値を削除するのであれば有効ですが、複数の値を削除することはできません。もし複数の値を削除したいのであればarray_diff()を使うといいかと思います。

array_diff()

$arrayから下記の値を削除したいと思います。

$remove = [
	'default',
	'aside',
];

続いてarray_diff()を下記のように使用します。第一引数にはメインの配列を設定します。第二引数には削除したい配列を設定します。逆に設定しないように気を付けてください。

$array = array_diff($array, $remove);

出力結果は下記のようになります。

array(4) {
  [1]=>
  string(6) "single"
  [2]=>
  string(7) "archive"
  [4]=>
  string(6) "footer"
  [5]=>
  string(6) "header"
}

結果からわかるようにキーが連番ではなくなっています。もしこれが気になるようでしたらarray_values()を使って再度連番にする手もあります。

$array = array_values($array);

参考文献