使用unset()后如何重新索引数组?

时间:2010-08-01 06:01:48

标签: php arrays unset

使用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循环并手动传输它们,但是一步到位的解决方案会非常棒。我在任何地方都找不到任何东西。

2 个答案:

答案 0 :(得分:2)

调用array_values重新索引数组。

答案 1 :(得分:0)

我刚刚发现你也可以做一个

 array_splice($ar, 0, 0);

这就是重新建立索引,所以你最终得不到原始数组的副本。