16.10.2009

Мне начинает нравиться пхп

Задумал написать прогу, которая определяет сколько раз слово встречается в тексте. Знаю, что этого добра полно в сети, но это же искать надо, а вдруг там зараза какая прицеплена. Ну и своё-то – оно родное.

Алгоритм несложный, я бы сказал примитивный, но писать лень. В конце концов, заборол себя, сделал. Соорудил два массива: для слов и для их количеств. Можно как-то и одним обойтись, но я раньше с массивами в пхп вообще не работал. Чтобы сделать правильно – придется читать, экспериментировать. В результате, сделал как проще, ибо самая короткая дорога – это та, которую знаешь, да. По тексту в цикле ищу пробел, все, что до него – слово. Дальше нужно искать его в массиве слов. Если нашел – увеличиваю соответствующее значение в массиве количеств, не нашел – добавляю слово в массив слов и 1 в массив количеств. Потом выкидываю рассмотренное слово из текста и закрываю цикл.

Исправил баги – все заработало. Вывожу (опять же, в цикле) результаты. Приходит мысль отсортировать их по алфавиту и по частоте употребления. Причем сортировать придется два массива: сами слова и их количества. Тут мне стало совсем лень, начал искать готовые функции. Оказалось, что их предостаточно, во всех видах. Хошь – по индексу элемента сортируй, хошь – по значению. Хоть в прямом направлении, хоть в обратном. Лепота. К тому же, нашел функцию, которая массив распечатывает (никаких циклов не нужно). Попутно вспомнил, что в VB есть функция split, которая разбивает текст на элементы и создает массив. В пхп такая тоже нашлась. Ну и, в конце концов, обнаружил функцию, которая делает ровно то, что мне с самого начала было нужно: определяет частоту вхождения элемента в массив. Ну ё-маё, почувствовал себя ненужным. Все уже изобретено.

В итоге, вместо серии циклов и условий получилось 4 строки (параметры не указываю):

split
array_count_values
arsort
print_r

Что еще понравилось в пхп-массивах: индексом может быть все, что угодно, не обязательно порядковый номер элемента. Например, array_count_values выдает массив, где индекс – это слово, а значение – кол-во этих слов в тексте. Может быть, такое есть и в других языках, но я этим ни разу не пользовался.

деятельность  сын шибок  
 
Комментарии:
Skyindream, 2009-Nov-18 16:49:40
На Python одно удовольствие писать такие штуки все таки серьезный язык, ни как ПХП.
 
Имя

я не бот
 

Начало   Все   Любая   RSS

30.12.2009Итоги года
07.12.2009Нашли применение
05.12.2009Че ниче не пишешь?
05.11.2009КАрантин, КАникулы
31.10.2009Домашний зверинец
16.10.2009Мне начинает нравиться пхп
07.10.2009Решение финансовых проблем
06.10.2009С днем учителя
05.10.2009Как качать мед
28.09.2009Vista vs Denwer
23.09.2009Новый интерфейс в программах
17.09.2009unmaskparasites.com
15.09.2009Работы на сайте
04.09.2009Стэнли, Питтсбург, Малкин и Ко
03.09.2009Я Его видел!
29.08.2009Результат инвестирования
17.08.2009Бредовая идея
13.08.2009Качали мед
04.08.2009Региональный хостинг

Темы

глупости

деятельность

зае..ло

интересы

мысли

образование

отдых

радости

странности

сын шибок

трудности

фотки

цветы жизни