PHP数组,只删除彼此相邻的重复项

时间:2014-09-30 15:19:03

标签: php arrays

$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);

所以基本上,我正在寻找一种快速方法,只删除彼此旁边的重复项。

2 个答案:

答案 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