Вот фрагмент телепрограммы (ассоциативный массив, где время - ключ, а телепередача - значение): Код (Text): 15:40 Махинаторы 16:05 Махинаторы 16:35 Золотая лихорадка 17:30 Выжить любой ценой 18:25 Выжить любой ценой 19:20 Выжить любой ценой 20:15 Как это устроено? 20:40 Охотники за складами: Британия 21:10 Склады: битва в Канаде 21:40 Багажные войны 22:05 Махинаторы 22:30 Махинаторы Как удалить повторяющиеся тв-передачи идущие друг за другом, но оставить только первую? Спасибо! Код (Text): 15:40 Махинаторы 16:35 Золотая лихорадка 17:30 Выжить любой ценой 20:15 Как это устроено? 20:40 Охотники за складами: Британия 21:10 Склады: битва в Канаде 21:40 Багажные войны 22:05 Махинаторы
Нет, но я так понял array_unique вообще оставляет первое встречное, а остальные, - неважно идут они подряд или нет, - удаляет. А как насчет next()? Только что-то не соображу, как создать условие...
да я загнался.. array_unique и индексы должен убрать.. попробуйте так.. может сработает.. Код (Text): $tmp = ''; foreach($array as $a => $v){ if($tmp == $v){ unset($array[$a]); } $tmp = $v; }
Не уверен, что правильно вас понял... Так? PHP: $tmp = ''; $arr = array( '14:50' => 'Быстрые и громкие', '15:40' => 'Махинаторы', '16:05' => 'Махинаторы', '16:35' => 'Золотая лихорадка', '17:30' => 'Выжить любой ценой', '18:25' => 'Выжить любой ценой', '19:20' => 'Выжить любой ценой', '20:15' => 'Как это устроено?', '20:40' => 'Охотники за складами: Британия', '21:10' => 'Склады: битва в Канаде', '21:40' => 'Багажные войны', '22:05' => 'Махинаторы', '22:30' => 'Махинаторы', '23:00' => 'Как это устроено?' ); foreach($arr as $a => $v){ if ($tmp == $v){ unset($arr[$a]); }; $tmp = $v; print_r($v); }
Да я и сам чувствую, что простейшее. Знаю, что foreach; только какое в foreach прописать условие, - вот главный вопрос.
Алекс в коде своём всё написал. Логика следующая: Перебираем массив, сравнивая текущий элемент с предыдущим. Перед циклом объявлена пустая переменная $tmp. В конце каждой итерации в эту переменную заносится текущее значение массива, чтобы сравнить это значение со следующим элементом в следующей итерации, когда текущий элемент уже станет предыдущим, а следующий текущим. Если текущий элемент равен предыдущему, то текущий элемент удаляется. Всё.
Это все понятно. Просто тот, код, который прислал Алекс, нужно немного подправить, а у меня из-за нехватки опыта не получается это сделать. --- Добавлено --- Вывел $B через print_r, и массив ни чем не отличается от первоначального. Но все равно спасибо!