gpt4 book ai didi

php - 在数组中使用 unset() 函数删除元素

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:54:09 29 4
gpt4 key购买 nike

尝试使用以下代码删除数组(如下所示)中小于 0 的所有元素:

 <?php 
$arr=array(1,2,3,4,5,-6,-7,-8,-9,-10);

for ($i=0;$i<count($arr);$i++){
if ($arr[$i]<0) {
unset($arr[$i]);
}
}

var_dump($arr);

echo '<pre>', print_r($arr), '</pre>';

?>

但是,结果是这样的:

array(7) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [4]=> int(5) [8]=> int(-9) [9]=> int(-10) }
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[8] => -9
[9] => -10
)
1

很困惑为什么不是所有小于 0 的元素都从数组中删除。对此有什么想法吗?

最佳答案

这是在向前迭代集合时删除元素时通常会发生的情况。你最终会丢失元素,因为你试图迭代一个移动的目标。一种解决方案是向后迭代

for ($i = count($arr) - 1; $i >= 0; $i--)

另一种方法是简单地使用 array_filter 来创建一个新数组

$newArr = array_filter($arr, function($num) {
return $num >= 0;
});

关于php - 在数组中使用 unset() 函数删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48796990/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com