在PHP中按值从数组中删除一个元素

369 阅读2分钟

在PHP中,有不同的方法来从数组中按值删除一个元素。

最简单的方法是array_search()和unset()函数的组合。所以让我们逐一检查每个方法。

内容

方法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教程中学习一些新的知识。如果你有任何问题,请在下面评论。