| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > выбор из массива элементов встречающихся один раз |
| Автор: lelik133 31.7.2004, 16:47 |
| Народ помогите, есть следующая задача имееться масиив большой более 75 тыс. элементов, в нем ест элементы которые встречаються один раз есть те которые дублированы несколько раз так вот надо на выходе полукчить два массива один с элементами встречающимися только один раз, а второй с теми котые входят в начальный масиив два раза и более. Как это реализовать на PHP или Perl пока четкого механизма не придумал. |
| Автор: nevermind 31.7.2004, 19:37 |
| Для этого тебе придется "прощупать" каждый элемент Создаешь два массива 1 для дубликатов 2 не для дубликатов Создаешь в исходном итератор, и сравниваешь элементы массива по очереди как только нашел дубликат, то копируй этот элемент в массив 1 и идешь дальше. Если дубликата не нашлось то копируй в элемент массив 2. |
| Автор: lelik133 31.7.2004, 21:22 |
| да на этом комп просто повеситься прикинь каждый элемент сравнить с 75 тыс (придеться произвести 75000 в степени 75000 сравнений) нет должна быть стандартная функция которая покажет сколько раз каждый элемент входит в массив |
| Автор: Ignat 31.7.2004, 22:01 |
| Что-то в мануале ничего не нашел. Есть идея склеить имплодом и прошерстить регами. |
| Автор: RaZoR 31.7.2004, 22:02 |
| щас... есть одна идея... скоро выложу наверное |
| Автор: nevermind 31.7.2004, 22:25 | ||
Намного меньше на самом деле Ведь если мы уже сранили 1 элемент со 2, то нам совсем не обязательно сравнивать 2 с 1. Делается просто, на какой позиции сейчас находится итератор, сравнение производится наченая не с 1 элемента, а последующей от итератора позиции допустим мы имеем 10 элементов, то количество сравнений будет: 9+8+7+6+5+4+3+2+1=45 сравнений но не в коем случае не 10^10=10000000000 как ты написал |
| Автор: RaZoR 31.7.2004, 22:26 | ||
| короче вот... написал кое-что... может быть можно лучше, но это первое, что пришло в голову. $array - начальный массив $new_array1, $new_array2 - два новых массива
а может я ваще вопрос не понял... |
| Автор: Kefir 1.8.2004, 11:46 |
| есть такая замечательная ф-ция в ПХП: http://ee.php.net/manual/en/function.array-count-values.php надеюсь, что поможет |
| Автор: <Spawn> 1.8.2004, 13:13 | ||||
| Если бы эти данные лежали в талбице базы данных то все было бы просто: 1)
2)
|
| Автор: Graf Zeppelin 1.8.2004, 13:29 |
| Вобще-то если бы была стандартная функция она тоже бы вешала копм |
| Автор: BioMaX 16.7.2009, 16:02 |
| Можно сделать иначе $string = implode(",", $array); А дальше пройтись строковой функцией на поиск дубликатов... либо меня глючит )) |
| Автор: Ипатьев 16.7.2009, 16:10 |
| BioMaX, учитывая, что за 5 (прописью: пять!) лет надобность в решении этого вопроса наверняка отпала, то да - глючит, и при том жестоко. |
| Автор: lelik133 16.7.2009, 16:43 |
| жесть. BioMaX как вы вообще эту тему откопали. я уже и не помню для какого проекта мне такая хрень понадобилась. и что как то ее решил тогда это точно эх.. сейчас бы решилось все за пять минут, таблица в бд и count |