0

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

4

2 回答 2

3

调用array_values以重新索引数组。

于 2010-08-01T06:05:53.867 回答
0

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

 array_splice($ar, 0, 0);

这会在原地重新索引,因此您最终不会得到原始数组的副本。

于 2013-12-04T15:42:47.590 回答