我知道这些问题到处都有,但我有以下解决方案,并希望确保它始终有效。
考虑以下数组......
Array
(
[299] => <span class="state-2"><span class="typetitle">Unit 1</span><img src="/unit1.jpg" /></span>
[293] => <span class="state-2"><span class="typetitle">Unit 2</span><img src="/unit2.png" /></span>
[231] => <span class="state-2"><span class="typetitle">Unit 3</span><img src="/unit3.png" /></span>
[336] => <span class="state-2"><span class="typetitle">Unit 3</span><img src="/unit3.png" /></span>
[188] => <span class="state-2"><span class="typetitle">Unit 4</span><img src="/unit4.png" /></span>
[334] => <span class="state-2"><span class="typetitle">Unit 5</span><img src="/unit5.jpg" /></span>
[294] => <span class="state-3"><span class="typetitle booked">Unit 2</span><img src="/unit2.png" /></span>
[335] => <span class="state-3"><span class="typetitle booked">Unit 4</span><img src="/unit4.png" /></span>
)
具有state-2类的项目可用,而state-3的项目已完全预订,并且最后按设计排序,因为我根据值标题对数组进行排序。这一点有效。
现在我想以相同的顺序删除重复单元(单元2,单元3,单元4),以便第一次出现,最后一次不出现。这样,如果一个单位被预订,但是同一类型的单位仍然可用,那么可用的单位不会被隐藏,这就是我这样做时会发生的......
$services = array_intersect_key($services, array_unique(array_map('strip_tags', $services)));
我的问题是,这是如何删除重复的项目?它是否找到第一个,保留它,然后删除任何进一步的重复项?
我可以保证这个array_unique每次都会以这种方式工作吗?或者是否存在删除数组中第一个的风险?
答案 0 :(得分:0)
啊,我发现如果我想包含它,array_unique接受一个排序var,但是在php 5.2.10中它默认改为SORT_STRING。
这应始终确保只要我的初始数组排序始终正确,array_unique将保留第一个找到的实例,并删除每个连续的副本。