例如,我有一个这样的数组:
$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);
但有了这个,不幸的是阵列将会清空......
如何从数组中删除确切的元素?
谢谢
答案 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