$arr = array(1, 2, '...', '...', '...', 6, 7, 8, '...', 10);
array_unique creates: array(1, 2, '...', 6, 7, 8, 10);
I want the following: array(1, 2, '...', 6, 7, 8, '...', 10);
所以基本上,我正在寻找一种快速方法,只删除彼此旁边的重复项。
答案 0 :(得分:0)
$result = array();
$first = true;
foreach ($array as $x) {
if ($first || $x !== $previous) $result[] = $x;
$previous = $x;
$first = false;
}
更改$x !== $previous
条件以符合您首选的“重复”定义。例如,array_unique
进行了松散类型的比较。
答案 1 :(得分:0)
我会这样做:
<?php
$arr = array(1, 2, '...', '...', '...', 6, 7, 8, '...', 10);
$el = $arr[0];
$out = $arr;
for ($i=1, $c = count($out); $i<$c; ++$i) {
if ($arr[$i] == $el) {
unset($out[$i]);
}
else {
$el = $out[$i];
}
}
$out = array_values($out);
foreach ($out as $i) {
echo $i."<br />";
}
输出:
1
2
...
6
7
8
...
10