我使用哈希来存储成员 ID。我使用以下验证来避免重复:
if($cases{$type} != $member_id) {
$cases{$type} = $member_id;
}
之后,我想按每个 $type 获取成员总数。我怎样才能做到这一点?
我尝试了以下但不工作:
scalar(values $cases{$type});
非常感谢。
您当前的方法实际上并没有计算给定类型中有多少成员;它只是跟踪最后添加的成员是什么。
要保持计数,请考虑使用 hash-of-a-hash;对每个$member_id
要添加的内容使用它:
$cases{$type}{$member_id} = 1;
哈希分配的值无关紧要;这只是一种使用哈希键来保持唯一性的方法。
然后,要获取给定类型的成员数,请使用
scalar keys %{$cases{$type}}
您可以$member_id
用作键并用于grep
查找计数。存储之$type
类的$case{$member_id} = $type
使用以下内容打印计数。
print scalar grep $case{$_} == $type, keys %case;