php数组删除数组中的连续重复出现

时间:2013-07-17 23:22:15

标签: php arrays duplicate-removal

我想问的问题是:

无论如何,我可以从下面的数组中删除连续的副本而只保留第一个吗?

数组如下所示:

$a=array("1"=>"go","2"=>"stop","3"=>"stop","4"=>"stop","5"=>"stop","6"=>"go","7"=>"go","8"=>"stop");

我想要的是一个包含以下内容的数组:

$a=array("1"=>"go","2"=>"stop","3"=>"go","7"=>"stop");

任何建议都会有所帮助。问候。

2 个答案:

答案 0 :(得分:7)

连续重复?我不知道本机功能,但这个功能。好吧差不多。认为我理解错了。在我的函数中,7 => “go”是6 =>的副本。 “go”,8 => “停止”是新值......?

function filterSuccessiveDuplicates($array)
{
    $result = array();

    $lastValue = null;
    foreach ($array as $key => $value) {
        // Only add non-duplicate successive values
        if ($value !== $lastValue) {
            $result[$key] = $value;
        }

        $lastValue = $value;
    }

    return $result;
}

答案 1 :(得分:2)

您可以执行以下操作:

if(current($a) !== $new_val)
    $a[] = $new_val;

假设你没有在两者之间操纵那个数组,你可以使用current()它比每次检查count($a)-1

时的值更有效率