У меня есть то, что похоже на хэш хеша массива хэшей. Я пытаюсь тянуть некоторые значения, и я в тупике (это способ глубже, чем я хотел бы пойти со структурой. Похоже, что это .....Итерация над сложной структурой данных
%htest = (
8569 => {
4587 => [
{
date=> "2011-01-15",
approved=> 1,
},
{
date=> "2011-01-12",
approved=> 1,
},
],
1254 => [
{
date=> "2011-01-12",
approved=> "",
},
{
date=> "",
approved=> 1,
},
],
},
);
Попытку перебрать эту вещь давая мне массивную головную боль.Я пытаюсь получить доступ к количеству элементов под вторым значением хэш-функции (4587 и 1254). Число тех элементов, где одобрено = «1», и количество элементов, в которых дата содержит значение.
Если бы я мог перебрать их, я уверен, что смогу впихнуть то, что мне нужно в менее сложную структуру, но до сих пор я в недоумении.
Я получил это далеко ...
while (my ($id, $surveyhash) = each %{ $htest{'8569'} }){
print "$enumid = $subhash\n";
print Dumper $subhash."\n";
}
Это дает мне «4587» и «1254», но пытается сделать самосвал на $ Subhash просто дает мне ....
4587 = ARRAY(0x9a9ffb0)
$VAR1 = 'ARRAY(0x9a9ffb0)
';
1254 = ARRAY(0x9a91788)
$VAR1 = 'ARRAY(0x9a91788)
';
Любой идее, как перебрать это уродство? Джени
OMG xpapad, какой быстрый ответ! Я исправлял это, когда вы отвечали. –
@JaneWilkie вы можете использовать 'eq' вместо' == 'в' $ approved ++, если $ item -> {approved} == 1; ', чтобы избежать аргументации" "не является числовым ... предупреждением. Похоже, что вы одобрили не числовое значение. Кроме этого, код выше отличный. – jchips12
Это работает как CHAMP! Проголосовать xpapad UP! ПУТЬ! –