Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl foreach语句是按顺序迭代还是按随机顺序迭代?_Perl_Foreach_Iteration - Fatal编程技术网

Perl foreach语句是按顺序迭代还是按随机顺序迭代?

Perl foreach语句是按顺序迭代还是按随机顺序迭代?,perl,foreach,iteration,Perl,Foreach,Iteration,我想知道Perl中的foreach语句是否以一致的顺序迭代数组中的项?也就是说,如果在同一数组或列表上多次使用foreach,是否会得到不同的结果?如果不在两次之间更改列表,则列表的顺序将保持一致。是的,foreach语句中的项按顺序迭代 您的问题可能源于对散列元素进行迭代时产生的混乱: my %hash = ('a' => 1, 'b' => 2, 'c' => 3); foreach my $key (keys %hash) { print $key } ; # ou

我想知道Perl中的foreach语句是否以一致的顺序迭代数组中的项?也就是说,如果在同一数组或列表上多次使用foreach,是否会得到不同的结果?

如果不在两次之间更改列表,则列表的顺序将保持一致。

是的,
foreach
语句中的项按顺序迭代

您的问题可能源于对散列元素进行迭代时产生的混乱:

my %hash = ('a' => 1, 'b' => 2, 'c' => 3);
foreach my $key (keys %hash) { print $key } ;    # output is "cab"

但看似随机的顺序是Perl哈希表中数据存储方式的产物(Perl哈希表中的数据没有顺序)。“改变”哈希表顺序的是
keys
语句,而不是
foreach

Perl的foreach循环哈希顺序看起来是随机的原因在于perlsec文档中链接的只是为了学究,
keys
不会更改哈希表的顺序-如果在同一哈希表上重复调用
keys
,而不插入或删除任何键,则每次都会以相同的顺序返回键。首先,通过将数据存储在散列中的行为改变了顺序。散列以确定但不可预测的顺序存储数据(在大多数实际情况下,使数据实际上处于无序状态)。只需添加一个相关问题的链接: