Автор Тема: Массивы  (Прочитано 4383 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн =Женек=

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 66
  • +0/-0
  • 0
    • Просмотр профиля
    • http://icq-easy-hack.narod.ru
Массивы
« : 08 Февраля 2003, 21:14:04 »
У меня имеется кострукция:

foreach $element(@list) {
   
    massiv[xxx]=
}

как мне приравнять ххх  то есть номер в массиве
к номеру $list обрабатываемого в данной итерации.

Неохота вводить специальную переменную, и ++ ее каждый раз.

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Массивы
« Ответ #1 : 08 Февраля 2003, 22:43:17 »
Цитировать
Неохота вводить специальную переменную
А придется :)
Оптимальным будет такой вариант:
$massiv[$_]=... for (0..$#list);
Литературный перевод с русского и английского на Perl. Дорого!

Оффлайн Wyclef

  • hello_worlder
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thug.narod.ru
Массивы
« Ответ #2 : 09 Февраля 2003, 00:11:07 »
Цитировать
У меня имеется кострукция


А смысл... Индексы элементов в первом массиве известны же... У тебя там проверка какая-то еще? Чему присваивается, то?

Цитировать
$massiv[$_]=... for (0..$#list);
« Последнее редактирование: 09 Февраля 2003, 20:34:27 от Wyclef »
It\'s nice to be important, but it\'s more important to be nice!

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Массивы
« Ответ #3 : 09 Февраля 2003, 02:38:57 »
А не проще ли так?

$i_max=@list;

for ($i;$i=$i_max;$i++) {

$element=@list($i);

massiv[$i]=

}

Кажись так... может где что пропустил...

Оффлайн =Женек=

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 66
  • +0/-0
  • 0
    • Просмотр профиля
    • http://icq-easy-hack.narod.ru
Массивы
« Ответ #4 : 09 Февраля 2003, 10:32:43 »
А... спасибо... Я начинающий. Знал только про foreach
А то что можно foreach заменить дипазоном от нуля до размера массива я знал, не знал только что посчитать его можно одной строкой.

 А вообще для чего я это делаю:
Я пишу скрипт анализа рефереров моего сайта.
Из URL вырезается строка типа server.ru, составляется массив, в котором может быть 10 server1, 15 server2 и т.д.
 А потом составляется база имен - каждый новый server из предыдущего массива сравнивается с имеющимся во втором.
Если он новый - то добавляется в массив, если уже имеется - то увеличивается счетчик.


 У меня два массива. Номер URL в одном соответствует номеру
ячейки с количеством рефереров от этого URL.
А нельзя ли  не нумеровать массив а давать имена ячейкам А потом приравнивать?
Т.Е после составления базы имен  получается массив вида
 $list{\'yandex\'} = 15. Может так будет рациональней, чем сделал я.

Может я глупости говорю, но начав изучать работу перл со строками и переменными мне его возможости кажутся безграничными..

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Массивы
« Ответ #5 : 09 Февраля 2003, 14:13:40 »
Цитировать
массив вида $list{\'yandex\'} = 15
называется хэшем ;)
Цитировать
Может так будет рациональней
Да.
=Женек=, в следующий раз описывай задачу полнее, а то отвечаю глупостью на глупость - аж самому обидно :)
Литературный перевод с русского и английского на Perl. Дорого!

Оффлайн =Женек=

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 66
  • +0/-0
  • 0
    • Просмотр профиля
    • http://icq-easy-hack.narod.ru
Массивы
« Ответ #6 : 09 Февраля 2003, 18:15:46 »
2 YA
Спасибо...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28