从数组php中删除一个值

时间:2012-08-29 19:37:07

标签: php arrays

有更简单的方法吗?

$array = array(1,57,5,84,21,8,4,2,8,3,4);
$remove = 21;   
$i = 0;
foreach ($array as $value ){
    if( $value == $remove)
        unset($array[$i])
        $i++;
    }

//array: 1,57,5,84,8,4,2,8,3,4

3 个答案:

答案 0 :(得分:8)

array_search答案很好。你也可以arraydiff喜欢这个

$array = array(1,57,5,84,21,8,4,2,8,3,4);
$remove = array(21);
$result = array_diff($array, $remove); 

答案 1 :(得分:5)

如果要删除数组中项目的 first ,请使用array_search查找数组中项目的索引,而不是滚动自己的循环。“ p>

$array = array(1,57,5,84,21,8,4,2,8,3,4);
$remove = 21;

$index = array_search($remove, $array);

if (index !== false)
  unset($array[$index]);

要删除所有重复项,只要找到匹配项,就重新运行搜索/删除:

while (false !== ($index = array_search($remove, $array))) {
  unset($array[$index]);
}

或查找匹配值的所有键并将其删除:

foreach (array_keys($array, $remove) as $key) {
  unset($array[$key]);
}

答案 2 :(得分:0)

这个更清洁:

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

<强>更新

或者,您可以将不匹配的值放入临时数组中,然后重置原始数据。

$temp = array();

foreach($array as $key => $value) {
    if ($value != $remove) {
        $temp[$key] = $value;
    }
}
$array = $temp;