在PHP中,有不同的方法来从数组中按值删除一个元素。
最简单的方法是array_search()和unset()函数的组合。所以让我们逐一检查每个方法。
内容
- 方法1:使用array_search()和unset()。
- 方法2:使用array_filter()和箭头函数
- 方法3:使用array_diff()删除一个元素
- 方法4:使用array_keys()
- 总结
方法1:使用array_search()和unset()
假设我们有一个数组,即keywords。现在我们想从其中移除元素***'array*'**。
<?php
//list of array elements
$keywords = array("remove", "array", "element", "by", "value");
//search a specific value i.e. "array" and store the index into $key
$key = array_search("array", $keywords);
//check if index value present
if ( $key !== false) {
//remove the specific index from array
unset($keywords[$key]);
}
var_dump($keywords);
输出。
array (size=4)
0 => string 'remove' (length=6)
2 => string 'element' (length=7)
3 => string 'by' (length=2)
4 => string 'value' (length=5)
所以,array_search() 将返回索引。在这个例子中,元素的索引是1。 'array'。 现在我们要检查$key 的值是否为假。如果不是,就从该数组中删除该元素。
我们在这里使用的是严格的比较运算符,即!== 。因为如果那个特定元素的索引是0,那么比较就会有问题。这就是为什么我们要使用!== 。
unset() 不会对数组进行重新索引。所以我们需要通过使用array_values() 来重新索引它。
相关文章
方法二:使用array_filter()和箭头函数
如果你使用的是PHP7.4,你可以使用array_filter() 与箭头函数。
<?php
//list of array elements
$keywords = array("remove", "array", "element", "by", "value");
$keywords = array_filter($keywords, fn ($m) => $m != "array");
var_dump($keywords);
输出。
array (size=4)
0 => string 'remove' (length=6)
2 => string 'element' (length=7)
3 => string 'by' (length=2)
4 => string 'value' (length=5)
array_filter() 遍历数组中的每一个值,并将该值传递给回调函数。这里我们用箭头函数作为回调函数。如果条件匹配,即 ,那么它将返回$m != "array"true。
这意味着如果条件不匹配,它将不会被返回到结果数组中。
但有一点需要注意的是,unset() ,只能删除第一次出现的。假设我们的数组中有一个重复的值,第一个方法只能删除第一个出现的值。但是在这个方法中,我们可以删除所有具有相同值的元素。
方法3:使用array_diff()删除一个元素
通过使用array_diff() ,你可以轻松地一次删除多个项目。但是它将创建一个新的数组而不改变原来的数组。
<?php
//list of array elements
$keywords = array("remove", "array", "element", "by", "value");
$keywords = array_diff( $keywords, ["remove", "by", "value"] );
var_dump($keywords);
输出。
array (size=2)
1 => string 'array' (length=5)
2 => string 'element' (length=7)
方法4:使用array_keys()
array_keys() 将返回一个数组的所有键。这里我们想要一个特定值的键,所以我们必须指定搜索值。否则,它将返回该数组的所有键。
<?php
//list of array elements
$keywords = array("remove", "array", "element", "by", "value");
foreach (array_keys($keywords, "by", true) as $key) {
unset($keywords[$key]);
}
var_dump($keywords);
输出。
array (size=4)
0 => string 'remove' (length=6)
1 => string 'array' (length=5)
2 => string 'element' (length=7)
4 => string 'value' (length=5)
这个方法可以删除一个数组中特定术语的多次出现。
总结
我想上述方法将帮助你从一个数组中按值删除一个元素。今天的教程就到此为止。你也可以从我们的PHP教程中学习一些新的知识。如果你有任何问题,请在下面评论。