Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как удалить повторения в массиве стоящие рядом?

dgviuergreugntr tsthrthrhsrthrt Ученик (96), закрыт 5 лет назад
Как удалить повторения в массиве стоящие рядом?
К примеру, есть массив ['asd', 'asd', 'asd', 'ghj', 'ghj', 'asd', 'asd', 'asd']
Нужно получить именно ['asd', 'ghj', 'asd'], а не ['asd', 'ghj']
Лучший ответ
Аристарх Несмелов Ученик (165) 5 лет назад
$param = $arr[0];
$count = count($arr);
for($I = 1; $I < $count; $I++){
if($arr[I] === $param){
unset($arr[I]);
}else{
$param = $arr[I];
}
}

sort($arr) //Чтобы ключи встали по порядку, так как удаляли элементы
Алексей АрыковМудрец (13113) 5 лет назад
только не I, а $I везде там
mnkbkh k,hkhb kkjbkbjkУченик (100) 5 лет назад
все хорошо, только сорт портит строку. все сортируется, а мне нужна строка сохранившая свою структуру. Поэтому я убрал сортинг. А в остальном хорошая функция. Спасибо! (пишу с нового аккаунта)
Остальные ответы
Nikolay Kondaurov Мастер (2484) 5 лет назад
$arr= array('asd', 'asd', 'asd', 'ghj', 'ghj', 'asd', 'asd', 'asd');
$result = array_unique($arr);
Алексей АрыковМудрец (13113) 5 лет назад
тебе-же ясно написали, что только соседние удалять. если в разных местах - должны оставаться
Алексей Арыков Мудрец (13113) 5 лет назад
$arr = ['asd', 'asd', 'asd', 'ghj', 'ghj', 'asd', 'asd', 'asd'];
foreach ($arr as $key => $current)
if ($current == $arr[$key-1]) unset($arr[$key-1]);
print_r($arr);
Саня Семенов Оракул (60428) 5 лет назад
если array_unique не подходит и хочется как то другому то перебирай массив поштучно и в цикле думай удалять элемент или нет в зависимости от требований к задаче
Похожие вопросы