Forum Webscript.Ru

Программирование => Perl => Тема начата: =Женек= от 08 Февраля 2003, 21:14:04

Название: Массивы
Отправлено: =Женек= от 08 Февраля 2003, 21:14:04
У меня имеется кострукция:

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

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

Неохота вводить специальную переменную, и ++ ее каждый раз.
Название: Массивы
Отправлено: YA от 08 Февраля 2003, 22:43:17
Цитировать
Неохота вводить специальную переменную
А придется :)
Оптимальным будет такой вариант:
$massiv[$_]=... for (0..$#list);
Название: Массивы
Отправлено: Wyclef от 09 Февраля 2003, 00:11:07
Цитировать
У меня имеется кострукция


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

Цитировать
$massiv[$_]=... for (0..$#list);
Название: Массивы
Отправлено: Phoinix от 09 Февраля 2003, 02:38:57
А не проще ли так?

$i_max=@list;

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

$element=@list($i);

massiv[$i]=

}

Кажись так... может где что пропустил...
Название: Массивы
Отправлено: =Женек= от 09 Февраля 2003, 10:32:43
А... спасибо... Я начинающий. Знал только про foreach
А то что можно foreach заменить дипазоном от нуля до размера массива я знал, не знал только что посчитать его можно одной строкой.

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


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

Может я глупости говорю, но начав изучать работу перл со строками и переменными мне его возможости кажутся безграничными..
Название: Массивы
Отправлено: YA от 09 Февраля 2003, 14:13:40
Цитировать
массив вида $list{\'yandex\'} = 15
называется хэшем ;)
Цитировать
Может так будет рациональней
Да.
=Женек=, в следующий раз описывай задачу полнее, а то отвечаю глупостью на глупость - аж самому обидно :)
Название: Массивы
Отправлено: =Женек= от 09 Февраля 2003, 18:15:46
2 YA
Спасибо...