![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| SeregaGREY |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 28.7.2006 Репутация: нет Всего: 0 |
Мне нужно подсчитать количество строк, где встречается одинаковое слово.
файл:
я сделал пока это:
то есть вывожу все IP на экран, а мне нужно вывести :
как это сделать? |
||||||
|
|||||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
вместо вывода на экран прибавляешь единичку к элементу массива, ключом которого является IP адрес.
|
|||
|
||||
| SeregaGREY |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 28.7.2006 Репутация: нет Всего: 0 |
каким ключём. вообще не понял(( |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
делаешь массив.
ассоциативный. ключем массива является та часть строки, повторения которых ты хочешь посчитать(судя по приведенному тобой примеру, Feldmarschall предположил, что это IP-адрес). берешь очередную строку. выделяешь часть, повторения которой ты хочешь посчитать. ищешь в массиве элемент с таким ключом. находишь - увеличиваешь значение этого элемента на 1. не находишь - создаешь со значением "1" в нем. |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
А можно и так:
|
|||
|
||||
| SeregaGREY |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 28.7.2006 Репутация: нет Всего: 0 |
пишет - неизвестная функция file_get_contents skyboy |
||||
|
|||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
На редкость древняя версия пхп.
Впрочем, не стоит расценивать реплику Mal Hack, как ответ на твой вопрос. Это просто иллюстрация возможностей языка. следующая стадия изучения, когда ты поймешь, как это вообще работает. Ты, кстати, хочешь понять? Или просто код, чтобы работал? Тебе что нужно? посчитать слова. для этого их надо положить в какую-то переменную. удобнее всего использовать массив, где будет слово и количество его вхождений, правильно? Это тебе понятно? |
|||
|
||||
| Mal Hack |
|
||||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Я тут репликами не бросаюсь, а предложил как вариант. Согласен с вами, вариант, скажем так из области "это изврат для отладки"... При этом, мое желание было показать возможность использования array_count_values, как раз то, что автору и нужно. Вариант для работы уже можно представить, как (как один из вариантов, опять таки):
|
||||
|
|||||
| SeregaGREY |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 28.7.2006 Репутация: нет Всего: 0 |
конечно хоче понять. весь php.net по array прочитал) особенно где упоминают key. нашёл array_intersect_key, array_diff_key. но не получается. я понял что надо создать массивы с одинаковыми IP и потом посчитать в них количество элементов, но я не понял как создать эти массивы из моего массива! |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
да не нужна тебе готовая функция. хотя странно, что ты её не нашел, особенно после того, как тебе её открытым текстом написали.
Функции надо использовать только тогда, когда ты понимаешь, что они делают. иначе ты будешь не программист, а механический болванчик. Я могу понять, когда матерый профи, сидящий на конвейере, старается как можно больше готовго кода использовать. Но вам-то, новичкам, пока только учитесь, и над вами дедлайн не каплет - сам бог велел разбираться, понимать, а не гнать продукт. Как создать эти массивы из твоего массива, я тебе написал, сразу. В твоем собственном цикле, вместо того, чтобы выводить сразу ip адрес, записывать его в массив. Неужели это так сложно? Ты знаешь, что ключом массива может быть не только циферка 1 2 3, но и любое слово? Можешь писать в качестве ключа свой айпи адрес? Ты вообще с массивами работал? Как добавить, какие бывают ключи? Если нет, то тебе именно это надо спрашивать в первую очередь, без этого в пхп вообще никуда. |
|||
|
||||
| SeregaGREY |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 28.7.2006 Репутация: нет Всего: 0 |
а как задать IP как ключ? в пхп.нет написано только:
|
||||
|
|||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Да точно так же, как любое другое значение.
В пхп нет написано, как определять массив, готовый А тебе нужно добавление нового элемента. Добавление делается очень просто: $array[ключ]=значение; Вот и пиши свой айпи в качестве ключа. внутри квадратных скобок можно писать практически любую конструкцию языка - константу, функцию, переменную, строковый литерал. Это сообщение отредактировал(а) Feldmarschall - 30.6.2008, 14:04 |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
А чем не устраивает мой вариант? Ассоциативные массивы, это лишняя память, т.к. во внутреннем представлении все равно в числа перевод идет...
|
|||
|
||||
| SeregaGREY |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 28.7.2006 Репутация: нет Всего: 0 |
пишет allowed memory чёто там... наверно памяти не хватает "$array[ключ]=значение;" - так у меня там много всяких IP. я не могу вручную туда каждый раз прописывать их же. |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
ты не обижайся, но я тоже считаю, что твой вариант с регулярками и массивами сложноват для человека, который ещё и с массивами-то не познакомился. а так твой вариант - вполне рабочий. откуда у тебя возьмется "вручную"? ты же эти ip из файла вытаскиваешь! ты с циклами знаком? вот и перебираешь/обрабатываешь в цикле каждую строку файла, выделяешь из неё часть от начала до первого пробела - вот тебе и ip. разве нет? |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |