You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用array_unique去重后数组索引顺序异常,如何修正?

解决PHP array_unique后保留原索引的问题

嘿,这个场景太常见了!array_unique() 默认会保留原数组中每个元素第一次出现时的键名,所以才会出现你例子里 b 还带着索引 2 的情况。想要把索引重置成连续的数字序列,有几个简单好用的方法:

方法一:用 array_values() 重新索引(最推荐)

这是最直接也最直观的方式,array_values() 会提取数组里的所有值,并自动给它们分配从 0 开始的连续数字索引。把它套在 array_unique() 的结果外面就行:

$b = array('a', 'a', 'b');
$SlideShowNames = array_values(array_unique($b));
// 输出结果:Array ( [0] => a [1] => b )

方法二:用 array_merge() 重置索引

array_merge() 函数在处理数字键的时候,会自动重新编排索引。你可以直接把 array_unique() 的结果传给它:

$SlideShowNames = array_merge(array_unique($b));

这个方法也能达到同样的效果,不过相比 array_values(),可读性稍差一点,所以更推荐第一种。

补充说明

array_unique() 保留原索引的设计其实是为了兼容关联数组的场景——如果你的数组是带自定义键名的关联数组,保留键名反而更有用。但对于纯索引数组来说,就需要我们手动用上面的方法重置索引啦。

内容的提问来源于stack exchange,提问作者Martin Olesen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:39:00