使用unset后嵌套数组的问题

时间:2013-05-03 01:14:23

标签: php arrays multidimensional-array reindex

我有一个动态构建的嵌套数组,我需要从中删除一个或多个索引。

浏览了php信息页面后,我发现使用了

unset($quotes_array[0]['methods'][3]);

将删除数组中的最后一组数据。

但是,如果我尝试使用

unset($quotes_array[0]['methods'][0]);

或除了最后一个之外的任何其他集合,它会混乱从阵列生成的输出。

例如,如果我有a,b,c,d:我可以删除d而没有问题,但如果我尝试删除a, 我得到一个空白的单选按钮,然后是b,c,当处理数组数据时,d一起丢失。

我假设我需要重新索引数组,但到目前为止我所做的每一次尝试都未能提供所需的结果,很可能是因为我重新索引$ quotes_array,而实际需要重新索引的数据是在'方法'指数内。

有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:0)

array_values($quotes_array[0]['methods']);

答案 1 :(得分:0)

如果您使用array_shift,则

取消设置 first element 很容易。 array_shift将弹出第一个元素并为您重新索引数组。

array_shift($quotes_array[0]['methods']);

如果您需要取消设置 something in the middle (例如[3]中的[2]),您可以使用array_values。首先取消设置要删除的元素,然后使用array_values重新索引它们。

unset($quotes_array[0]['methods'][2]);
array_values($quotes_array[0]['methods']);

如果您想删除数组的 last element ,可以使用array_pop。 array_pop将弹出数组的最后一个元素。在这种情况下无需重新索引。

array_pop($quotes_array[0]['methods']);