Intereting Posts
XML: установка значений элементов пространства имен проверка пароля cakephp Обновление составного ключа по дубликатному ключу Как повернуть SVG с помощью PHP Преобразование временной метки в относительную дату / время (например, «2 минуты назад») и постоянное обновление ее с помощью Javascript Как можно защитить PHP-код? Найдите первую бесплатную дату в повестке дня Изменение размера и обрезки изображений в PHP Отправка нескольких параметров данных с помощью jQuery AJAX Как предотвратить атаку SQL Injection в приложениях, запрограммированных в Zend Framework? Передайте массив PHP в массив Javascript Что является причиной размещения логического или нулевого значения перед оператором сравнения? как перемещать веб-сайт, созданный с помощью xampp (windows), на сервер хостинга Заголовки жесткого кодирования для excel-файла с использованием PHP при динамическом запросе SQL Невозможно использовать mysqli в php flex env на движке приложения

php-массив, удаляющий последовательные дубликаты в массиве

Вопрос, который я хотел бы задать здесь:

Есть ли в любом случае, что я могу удалить последовательные дубликаты из массива ниже, а только сохранить первый?

Массив показан ниже:

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