最后一次出现我有此数组:保持阵列的独特价值,维持秩序,保持各
array(0, 3, 4, 3, 6);
我想筛选出一倍,但保留最后结果
array_unique
给我0,3,4,6 ..但我需要(而不是第一所以它保存最后3)
最后一次出现我有此数组:保持阵列的独特价值,维持秩序,保持各
array(0, 3, 4, 3, 6);
我想筛选出一倍,但保留最后结果
array_unique
给我0,3,4,6 ..但我需要(而不是第一所以它保存最后3)
这将是一个方式,向后遍历数组:通过使用中间地图
$arr = array(0, 3, 4, 3, 6);
$res = array();
for ($i = count($arr) - 1; $i >= 0; --$i) {
$item = $arr[$i];
if (!isset($res[$item])) {
$res = array($item => $item) + $res; // unshift
}
}
print_r(array_values($res));
我做了一个权衡速度和内存之间,使可以使用isset()
,从中可以剥离值(或键)以形成最终结果。
更新
它的性能优于双array_reverse()
和array_unique()
方法作为数组变大,所以它不是那么糟糕毕竟:)
+1。请分享基准:) – arnaud576875
@ arnaud576875 https://gist.github.com/datibbaw/260772aef07957393092 - 基准测试代码本身正在进行中;-) –
1)实现自己的功能,或2)逆转阵列之前和之后。 – deceze
@deceze太糟糕了,没有'array_reduce_right()':) –
@Jack https://github.com/lstrojny/functional-php:-3 – deceze