重新索引数字数组键

22

我有一个使用explode()函数创建的数组,但由于我的数据是随机/动态的,所以数组的索引不断更改:

Array
(
    [2] => Title: Warmly little before cousin sussex entire set Blessing it ladyship.
    [3] => Snippet: Testing
    [4] => Category: Member
    [5] => Tags: little, before, entire
)

我需要让数组总是从0开始排序。我正在使用不同的数据进行测试,有时它从0开始,而在其他测试中,则以不同的数字开头。 我进行了研究,并找到了Array starting at zero,但它似乎只适用于该用户的特定情况。我用来构建数组的代码可以在这里看到: https://stackoverflow.com/a/10484967/1183323

我该如何做到这一点?


5
你是如何构建这个数组的?默认情况下,explode 函数将从 0 开始分割。 - Jage
1
看过手册了吗? - symcbean
2个回答

58
$your_new_array = array_values($your_old_array);

这样做可以,但是我在实现这个函数时还需要考虑其他方面吗? - Tower
不行。根据手册,“array_values() 返回输入数组中的所有值,并将数组按数字索引。” - J. Bruni
4
请注意,手册不能保证值的顺序将被保留。 - matt

12

使用 array_merge() 函数对数组进行重新编号:

$your_old_array = array( 2 => 'whatever', 19 => 'huh', 22 => 'yep' );
$your_new_array = array_merge($your_old_array);
print_r($your_new_array);

打印输出:

Array ( 
  [0] => whatever 
  [1] => huh 
  [2] => yep )

这也可以,我得到的结果与array_values类似,谢谢! - Tower
2
这类似于array_values,但如果数组中还有字符串键,则更好。 array_merge()保留字符串键,仅重新排列数字键。 - Anup_Tripathi
我认为array_merge是更好的选择。如果数组中有任何非数字索引,array_values将删除它们并重新编号。只有array_merge会保留非数字索引,同时仅重新索引数字索引。 - James Ludlow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接