どうも、ちょげ(@chogetarou)です。
連想配列(associative array)の特定の値を削除する方法を紹介します。
方法
連想配列(associative array)の特定の値を削除する方法は、3つあります。
array_filter()
ひとつめは、array_filter()を使う方法です。
まず、array_filter()を呼び出します。
array_filter()の第1引数に対象の連想配列、第2引数に1つの引数を持つ関数を指定します。
そして、第2引数の関数で、特定の値でない引数で「true」となる条件式を返します。
//arr=対象の連想配列, del_value=削除する値
$result = array_filter($arr, function ($value) { return $value !== del_value; });
上記のarray_filter()は、第1引数の連想配列(associative array)から特定の値を削除した連想配列を生成します。
使用例
<?php
$numbers = [
"one" => 1,
"サン" => 3,
"two" => 2,
"three" => 3,
"さん" => 3,
"三" => 3,
"four" => 4,
"five" => 5,
"参" => 3,
];
$result = array_filter($numbers, function ($value) { return $value !== 3; });
print_r($result);
?>
出力:
Array
(
[one] => 1
[two] => 2
[four] => 4
[five] => 5
)
array_diff()
ふたつめは、array_diff()を使う方法です。
まず、array_diff()を呼び出します。
そして、array_diff()の第1引数に対象の連想配列、第2引数に削除する値を持つ配列を指定します。
//arr=対象の連想配列, value=削除する値
$result = array_diff($arr, [value]);
上記のarray_diff()は、第1引数の連想配列(associative array)から特定の値を削除した連想配列を生成します。
使用例
<?php
$numbers = [
"one" => 1,
"サン" => 3,
"two" => 2,
"three" => 3,
"さん" => 3,
"三" => 3,
"four" => 4,
"five" => 5,
"参" => 3,
];
$result = array_diff($numbers, [3]);
print_r($result);
?>
出力:
Array
(
[one] => 1
[two] => 2
[four] => 4
[five] => 5
)
array_search() + unset()
みっつめは、array_search()とunset()を使う方法です。
まず、if文で条件分岐します。
if文の条件式でarray_search()を呼び出し、array_search()の結果を変数に代入します。
また、array_search()の結果が「false」以外であることを条件にします。
array_seach()の第1引数に削除する値、第2引数に対象の連想配列を指定します。
そして、if文のブロックでunset()を呼び出します。
unset()の引数で、連想配列のarray_search()の結果のキーにアクセスします。
//arr=対象の配列, value=削除する値
if (($key = array_search(value, $arr)) !== false) {
unset($arr[$key]);
}
上記のunset()は、対象の連想配列(associative array)からarray_search()の第1引数の値を削除します。
使用例
<?php
$numbers = [
"one" => 1,
"two" => 2,
"three" => 3,
"four" => 4,
"five" => 5,
];
if (($key = array_search(3, $numbers)) !== false) {
unset($numbers[$key]);
}
print_r($numbers);
?>
出力:
Array
(
[one] => 1
[two] => 2
[four] => 4
[five] => 5
)
まとめ
連想配列(associative array)の特定の値を削除する方法は、次の3つです。
- array_filter()を使う方法
$result = array_filter($arr, function ($value) { return $value !== del_value; });
- array_diff()を使う方法
$result = array_diff($arr, [value]);
- array_search()とunset()を使う方法
コメント