按值

时间:2017-03-11 16:57:14

标签: php arrays

我知道这些问题到处都有,但我有以下解决方案,并希望确保它始终有效。

考虑以下数组......

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每次都会以这种方式工作吗?或者是否存在删除数组中第一个的风险?

1 个答案:

答案 0 :(得分:0)

啊,我发现如果我想包含它,array_unique接受一个排序var,但是在php 5.2.10中它默认改为SORT_STRING。

这应始终确保只要我的初始数组排序始终正确,array_unique将保留第一个找到的实例,并删除每个连续的副本。

来源:http://php.net/manual/en/function.array-unique.php