从php中的数组中删除(精确)元素

时间:2010-03-17 13:53:43

标签: php arrays

例如,我有一个这样的数组:

  $test= array("0" => "412", "1" => "2"); 

我想删除元素,如果它= 2

 $delete=2;
 for($j=0;$j<$dbj;$j++) {
     if (in_array($delete, $test)) {    
         unset($test[$j]);
     }
 }
 print_r($test);

但有了这个,不幸的是阵列将会清空......  如何从数组中删除确切的元素?
 谢谢

5 个答案:

答案 0 :(得分:4)

在循环中,您运行的测试条件为true,因为数组中存在$ delete。因此,在每次迭代中,它删除当前元素,直到$delete中不再存在$test。试试这个。它遍历数组的元素(假设$dbj$delete中的元素数),如果该元素等于$delete,则将其删除。

$delete=2;
for($j=0;$j<$dbj;$j++) {
    if ($test[$j]==$delete)) {  
        unset($test[$j]);
    }
}
print_r($test);

答案 1 :(得分:4)

你的意思是什么?

我想用密钥$ key删除元素:

unset($array[$key]);

如果具体值:

$key = array_search($value, $array);
unset($array[$key]);

答案 2 :(得分:2)

尝试

if( $test[$j] == $delete )
    unset( $test[$j] );

您当前的代码所做的是每次搜索整个数组以进行$ delete,并取消设置当前迭代的值。在从数组中删除之前,您需要使用$ delete测试当前迭代的值是否相等。

答案 3 :(得分:2)

$key = array_search(2, $test);
unset($test[$key]);

答案 4 :(得分:2)

要从数组中删除特定项,请使用array_search和array_splice

的组合
$a = array('foo', 'bar', 'baz', 'quux');
array_splice($a, array_search('bar', $a), 1);
echo implode(' ', $a); // foo baz quux