使用unset()
后丢失数组顺序时遇到一些麻烦。这是我正在使用的代码。
$id = $_GET['id'];
for ($i = 0; $i < count($my_array); $i++) {
if ($my_array[$i] == $id) {
unset($my_array[$i]);
}
}
假设$my_array
有4个项目,$my_array[1]
等于$id
。在我取消设置之后,我循环$my_array
并得到 Undefined Offset:1 错误。使用print_r($my_array)
,我得到$my_array[0]
,$my_array[2]
和$my_array[3]
。
我完全理解为什么会这样。有没有办法重新索引数组,以便项2''掉落'到项目1,其余的项目分别到数组的末尾?
像reindex($my_array)
这样的东西会很甜蜜。我知道我可以使用新阵列运行另一个for循环并手动传输它们,但是一步到位的解决方案会非常棒。我在任何地方都找不到任何东西。
答案 0 :(得分:2)
调用array_values
重新索引数组。
答案 1 :(得分:0)
我刚刚发现你也可以做一个
array_splice($ar, 0, 0);
这就是重新建立索引,所以你最终得不到原始数组的副本。