从PHP数组中删除字符串?

时间:2010-11-08 01:02:30

标签: php arrays string

是否可以在不知道索引的情况下从PHP数组中删除字符串(参见下面的示例)?

示例:

array = array("string1", "string2", "string3", "string4", "string5");

我需要删除string3。

6 个答案:

答案 0 :(得分:29)

$index = array_search('string3',$array);
if($index !== FALSE){
    unset($array[$index]);
}

如果您认为您的值将不止一次尝试使用带有搜索值的array_keys来获取所有索引。你可能想确定

编辑:

注意,使用unset时索引保持不变。如果这是一个问题,那么有一个很好的答案here,它会说明如何使用array_splice执行此操作。

答案 1 :(得分:5)

你可以这样做。

$arr = array("string1", "string2", "string3", "string4", "string5");
$new_arr=array();
foreach($arr as $value)
{
    if($value=="string3")
    {
        continue;
    }
    else
    {
        $new_arr[]=$value;
    }     
}
print_r($new_arr); 

答案 2 :(得分:4)

使用array_searcharray_splice的组合。

function array_remove(&$array, $item){
  $index = array_search($item, $array);
  if($index === false)
    return false;
  array_splice($array, $index, 1);
  return true;
}

答案 3 :(得分:2)

这可能不是最快的方法,但它是一条简短而又整齐的代码:

   if (data == arr[mid]) {
        if (r - l == 0) {
            return mid;
        }
        return binarySearch(arr, l, mid, data);
    }
    if(data < arr[mid])
        return binarySearch(arr, l, mid-1, data);
    return binarySearch(arr, mid+1, r, data);

或者如果您使用的是PHP&gt; 5.4.0或更高版本:

$array = array_diff($array, array("string3"))

答案 4 :(得分:2)

您也可以这样尝试。

$array = ["string1", "string2", "string3", "string4", "string5"];
$key = array_search('string3',$array);
unset($array[$key]);

答案 5 :(得分:1)

这取决于数组的大小,并且有多种选择。

如果它通常很小,array_diff可能是最快的一致解决方案,正如Jorge所说。

稍大一组的另一种解决方案:

$data = array_flip($data);
unset($data[$item2remove]);
$data = array_flip($data);

但是,如果你没有重复的项目,这是唯一的好处。根据您的工作量,保证项目的唯一性也可能是有利的。