开发者

How do I reindex an array after using unset()?

I'm having a little trouble with lo开发者_运维知识库sing my array order after using unset(). This is the code I am using.

$id = $_GET['id'];
for ($i = 0; $i < count($my_array); $i++) {
  if ($my_array[$i] == $id) {
    unset($my_array[$i]);
  }
}

Assume that $my_array has 4 items and $my_array[1] is equal to $id. After I unset that, I loop on $my_array and I get an Undefined Offset: 1 error. With print_r($my_array), I get $my_array[0], $my_array[2], and $my_array[3].

I understand perfectly why that's happening. Is there a way to re-index the array so that item 2 'drops' to item 1, and and the rest of the items respectively to the end of the array?

Something like reindex($my_array) would be sweet. I know I could run another for loop with a new array and transfer them manually, but a one step solution would be awesome. I just couldn't find anything anywhere.


Call array_values to reindex the array.


I just discovered you can also do a

 array_splice($ar, 0, 0);

That does the re-indexing inplace, so you don't end up with a copy of the original array.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜