Вопрос, который я хотел бы задать здесь:
Есть ли в любом случае, что я могу удалить последовательные дубликаты из массива ниже, а только сохранить первый?
Массив показан ниже:
$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");
Любые предложения помогут. С уважением.
Вы можете просто сделать что-то вроде:
if(current($a) !== $new_val) $a[] = $new_val;
Предполагая, что вы не манипулируете этим массивом между вами, вы можете использовать current()
это более эффективно, чем подсчет его каждый раз, чтобы проверить значение в count($a)-1
Последовательные дубликаты? Я не знаю о родных функциях, но это работает. Ну, почти. Думаю, я понял это неправильно. В моей функции 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; }