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);