有没有办法从下面的数组中删除连续重复的元素,只保留第一个元素?
数组如下所示:
$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");
有没有办法从下面的数组中删除连续重复的元素,只保留第一个元素?
数组如下所示:
$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");
连续重复?我不知道有没有原生函数可以做到,但这个函数可以用。准确说,差不多可以用。我可能理解错了。在我的函数中,7 => "go" 是6 => "go" 的重复项,而8 => "stop" 是新值...?
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;
}
if(current($a) !== $new_val)
$a[] = $new_val;
current()
,它比每次计算并检查count($a)-1
的值更有效。$new_val
将是您要添加的值,例如“stop”或“go”。 - calcinai
..."3"=>"go","4"=>"stop"
而不是"3"=>"go","7"=>"stop")
? - Sean