如何在没有数组搜索的情况下从php中的数组中删除元素?

时间:2012-05-25 08:05:15

标签: php

在没有array_search

的情况下从php中的数组中删除元素

我想从数组中删除一个数组元素,但我不知道该元素的数组key只知道值

array_search可以使用值,首先找到密钥,然后使用unset

是否有内置数组函数来删除数组值的数组元素?

4 个答案:

答案 0 :(得分:4)

您只能通过引用此KEY来从数组中删除元素。所以你必须以某种方式得到这个KEY。从数组中获取搜索值的键的函数正是array_search()函数,该函数返回给定VALUE的KEY。

答案 1 :(得分:2)

示例显示了一种不使用array_search()

的方法
$myArray = array(5, 4, 3, 2, 1, 0, -1, -2); 
$knownValue = 3;

$myArray = array_filter(
               $myArray, 
               function($value) use ($knownValue) {
                   return $value !== $knownValue; 
               }
           ); 

答案 2 :(得分:1)

任何必须“删除数组值为”的数组元素的函数都必须在每个*元素上执行一个循环,查找要删除的值。因此,您也可以添加自己的for循环来执行此操作,或array_search()将为您执行此操作。

数组具有键的原因是您可以使用该键有效地获取值。

* 实际上,一旦找到它就会停止循环,而不是继续寻找,除非可能有重复删除

答案 3 :(得分:0)

不使用array_search的唯一有效案例是,如果您要取消设置多个值。你仍然需要使用密钥。我建议您遍历数组并删除符合条件的字段。

foreach($array as $key => $value) {
    if($value === $deleteValue)
        unset($array[$key]);
}