["bb", "ab", "aa", "ab", "bb"],-6ren">
gpt4 book ai didi

arrays - 在 Perl 中循环遍历数组的哈希值

转载 作者:行者123 更新时间:2023-12-02 09:29:43 26 4
gpt4 key购买 nike

我有一个数组哈希,如下所示:

my %hash = (
234 => ["Larry", "Curly", "Moe"],
235 => ["bb", "ab", "aa", "ab", "bb"],
236 => ["aa", "ab", "bb", "aa", "bb"],
)
对于哈希中的每个键,我想循环遍历数组的每个元素,将其分配给标量变量,以便我可以处理它,然后移至数组的下一个元素。一旦我处理完某个键的数组的所有元素,我想转到下一个键并单独处理其数组的所有元素,依此类推。

我找到并修改了一段迭代哈希值(在本例中为每个键的数组)的代码片段。然后我有一个嵌套的 for 循环,它迭代该数组的每个元素。然而,它并没有达到我的预期。

for my $value (values %hash) {
for (@$value) {
my $index = shift($_);
#process index
}
}

错误消息[行号] 处不是 ARRAY 引用

例如,对于第一次迭代,我希望 $index 等于 Larry 以便我可以处理它。下一次迭代,我希望 $index 等于 Curly 以便我可以处理它。下一次迭代,$index应该等于Moe,处理它。下一次迭代,$index 应等于bb,依此类推。

可能有比shift更好的函数。 shift 函数从数组中取出第一个元素。我希望数组的哈希保留其值,这样我就不必重新填充数组的哈希。

谢谢

最佳答案

问题是 @$value 中的列表已经是数组元素的列表,而不是数组。这就是为什么你不能对其使用 shift 的原因。您所需要的只是:

for my $value (values %hash) {
for my $index (@$value) { # "Larry", "Curly", "Moe" etc
....
#process index
}
}

无论如何,您可能不想在数组上使用 shift,因为这会删除原始结构中的条目。

关于arrays - 在 Perl 中循环遍历数组的哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15043402/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com