📅  最后修改于: 2023-12-03 15:08:55.988000             🧑  作者: Mango
在PHP中,我们可以通过使用 unset()
函数来删除数组中的元素。但是,该函数是基于键名进行删除的。那么如何在按值非键执行数组删除呢?本文将为您介绍两种方法。
array_search()
函数array_search()
函数可以查找数组中是否存在指定值,如果存在就返回该元素的键名。我们可以使用这个特性来删除数组中的指定元素。
$my_array = array("apple", "orange", "banana", "apple");
$value = "apple";
$key = array_search($value, $my_array);
if ($key !== false) {
unset($my_array[$key]);
}
print_r($my_array);
输出结果为:
Array
(
[1] => orange
[2] => banana
[3] => apple
)
在上面的例子中,我们首先定义了一个包含多个相同元素的数组 $my_array
,然后指定需要删除的值 $value
为 "apple"
。
接着,我们使用 array_search()
函数来查找 $value
在数组中的位置,并将其返回的键名赋值给 $key
变量。
最后,我们通过 unset()
函数按键名删除了 $key
所对应的元素。注意,我们使用了 !==
运算符来判断 $key
是否等于 false
,这是因为 array_search()
函数可能返回 0
,如果使用 !=
运算符会将其误判为 false
。
array_filter()
函数array_filter()
函数可以对数组中的每个元素应用一个回调函数,并返回满足条件的所有元素组成的新数组。我们可以使用这个函数来筛选出需要保留的元素,从而达到删除指定元素的效果。
$my_array = array("apple", "orange", "banana", "apple");
$value = "apple";
$my_array = array_filter($my_array, function($element) use ($value) {
return ($element !== $value);
});
print_r($my_array);
输出结果为:
Array
(
[1] => orange
[2] => banana
)
在上面的例子中,我们首先定义了一个包含多个相同元素的数组 $my_array
,然后指定需要删除的值 $value
为 "apple"
。
接着,我们使用 array_filter()
函数筛选出所有不等于 $value
的元素并组成一个新数组,最后将其赋值给 $my_array
变量。
需要注意的是,我们在回调函数中使用了 use ($value)
的语法,将 $value
变量传递给了回调函数。这是因为 array_filter()
函数默认只传递数组元素作为回调函数的参数,无法直接获取外部变量的值。