Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Добавление и инкрементирование хэшей


Автор: kukich 5.3.2010, 16:32
Здравствуйте , запутался в элементарной задачке.В цикле из базы данных по одной выдирается автор книги,если этот автор уже был , то надо увеличить счетчик , если нет , то надо записать его в хэш и со значением один.
Код

while (@avtor = $stq->fetchrow_array)    #в массиве @avtor либо одно значение либо ниодного
if(exists($hash{$avtor[$f]})){
    $hash{$avtor[$f]=$hash{$avtor[$f]}+1;
        }
else{
    $hash{$avtor[$f]=1;
    }


Проблема в том , что когда запускаю программу счетчик не увеличивается ,и на выходе получается список повторяющихся авторов а напротив - 1.

Автор: DEER 5.3.2010, 17:41
Этот код точно выполняется?
по моему там скобок не хватает

Автор: Pfailed 5.3.2010, 18:22
Если я правильно понял, то сгодится такой вариант:
Код

while (@avtor = $stq->fetchrow_array)
{
    $hash{$avtor[0]}++;
}


А что у вас за переменная $f?

Автор: kukich 11.3.2010, 13:03
to DEER : Да ,тут пропущена одна скобка в 3 строке кода и в предпоследней строчке  ("}")
to Pfailed: переменная $f это номер элемента массива $avtor,в цикле перебирает значения массива avtor,в котором либо одно либо 0 значений

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)