Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中从数组中删除(精确)元素_Php_Arrays - Fatal编程技术网

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

在php中从数组中删除(精确)元素,php,arrays,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); 但不幸的是,这样一来,数组将清空。。。 如何从数组中删除精确的元素? 谢谢

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

  $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);
但不幸的是,这样一来,数组将清空。。。 如何从数组中删除精确的元素?
谢谢

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

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

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

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

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

请重试

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

当前代码所做的是每次在整个数组中搜索$delete,然后取消设置当前迭代的值。在将当前迭代的值从数组中删除之前,需要使用$delete测试其相等性。

确切地说,这是什么意思

$key = array_search(2, $test);
unset($test[$key]);
I您想删除键为$key的元素:

unset($array[$key]);
如果指定值:

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

你的确切意思是什么

I您想删除键为$key的元素:

unset($array[$key]);
如果指定值:

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

要从数组中删除特定项,请结合使用数组搜索和数组拼接

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

要从数组中删除特定项,请结合使用数组搜索和数组拼接

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

您应该注意,这将对索引键进行重新排序,因此,当仅使用unset时,结果数组将是0,1,2而不是0,2,3,这是在此用例中使用较慢的数组拼接到unset上的唯一原因。您应该注意,这将对索引键进行重新排序,因此,当仅使用unset时,结果数组将是0,1,2而不是0,2,3,这是在这个用例中使用较慢的array_拼接over unset的唯一原因。