Php 在使用unset()之后,如何重新索引数组?

Php 在使用unset()之后,如何重新索引数组?,php,arrays,unset,Php,Arrays,Unset,使用unset()后,我在丢失数组顺序方面遇到了一些问题。这是我正在使用的代码 $id = $_GET['id']; for ($i = 0; $i < count($my_array); $i++) { if ($my_array[$i] == $id) { unset($my_array[$i]); } } $id=$\u GET['id']; 对于($i=0;$i

使用
unset()
后,我在丢失数组顺序方面遇到了一些问题。这是我正在使用的代码

$id = $_GET['id'];
for ($i = 0; $i < count($my_array); $i++) {
  if ($my_array[$i] == $id) {
    unset($my_array[$i]);
  }
}
$id=$\u GET['id'];
对于($i=0;$i
假设
$my_array
有4个项目,
$my_array[1]
等于
$id
。取消设置后,我在
$my_array
上循环,得到一个未定义的偏移量:1错误。使用
print\r($my\u array)
,我得到
$my\u array[0]
$my\u array[2]
,和
$my\u array[3]

我完全理解为什么会这样。是否有一种方法可以重新索引数组,使项目2“下降”到项目1,其余的项目分别下降到数组的末尾


reindex($my_array)
这样的东西会很好。我知道我可以用一个新的数组运行另一个for循环并手动传输它们,但一步解决方案会很棒。我在任何地方都找不到任何东西。

调用以重新索引数组。

调用以重新索引数组。

我刚刚发现您还可以

 array_splice($ar, 0, 0);

这会在原地重新编制索引,这样您就不会得到原始数组的副本。

我刚刚发现,您还可以执行

 array_splice($ar, 0, 0);

这会在原地重新建立索引,这样你就不会得到原始数组的副本。

伙计,你太棒了。虽然我已经试过了。我们只能怪这一次是凌晨2点以后;)谢谢again@Adam好了,现在已经早上7点多了:p我想我也要睡觉了。@Adam顺便说一下,在
取消设置之后,你可以用foreach迭代现在的单元素短数组。如果因为要使用for循环进行迭代而重新编制索引,那么这是不必要的;只需使用
foreach
reset
next
。是的,我知道我可以再做两个步骤,这样做,但数组_值似乎正是我所需要的。是的,早上7点听起来像是一个很好的停车点:Pdude you rock。虽然我已经试过了。我们只能怪这一次是凌晨2点以后;)谢谢again@Adam好了,现在已经早上7点多了:p我想我也要睡觉了。@Adam顺便说一下,在
取消设置之后,你可以用foreach迭代现在的单元素短数组。如果因为要使用for循环进行迭代而重新编制索引,那么这是不必要的;只需使用
foreach
reset
next
。是的,我知道我可以再做两个步骤,这样做,但数组_值似乎正是我所需要的。是的,早上7点听起来是个不错的停车点:P