使用PHP我有这个数组:
[0]: John
[1]: Brian
[2]: Julia
[3]: Adam
[4]: Brian
[5]: Jonathan
[6]: Amanda
[7]: Julia
[8]: Nathan
我想对数组进行排序,使其顺序尽可能接近原始顺序,但要堆叠重复项,创建以下数组:
[0]: John
[1]: Brian
[2]: Brian (duplicate value moved from index 4)
[3]: Julia
[4]: Julia (duplicate value moved from index 7)
[5]: Adam
[6]: Jonathan
[7]: Amanda
[8]: Nathan
我假设这是嵌套foreach循环的问题,但我不确定如何在嵌套foreach循环中应用unset()。
编辑:因为我可能没有解释清楚,我想保留数组中的重复项,我不想删除重复项。
6条答案
按热度按时间nvbavucw1#
使用
array_shift
、array_intersect
和in_array
函数的解决方案:输出:
w6mmgewl2#
不是最有效的解决方案,但有效:
v2g6jxz63#
它工作,只是测试。
jutyujz04#
请允许我提供一个资源友好的解决方案:
relj7zay5#
只需使用the
sort
function。结果为:
wfauudbj6#
只使用一个循环来创建每个唯一值第一次出现的简化查找Map,以及保存每个值最早索引的排序数组。
然后调用
array_multisort()
,按照排序数组对原始数组进行排序。不写入迭代函数调用。
代码:(Demo)