如何在foreach循环中跳过数组的第一个元素?

10

假设我有一个数组:

my @arr = (1,2,3,4,5);

现在我可以通过foreach循环来迭代它:

foreach ( @arr ) {
    print $_;
}

但是有没有一种方法可以从第二个元素(例如)迭代到最后一个元素?

提前致谢。

2个回答

17

这是 Perl。有许多种方法来做同一件事,比如使用数组切片:

for (@arr[1 .. $#arr])   # for and foreach are exactly the same in perl

你可以像Andy Lester建议的那样使用shift,但这当然会改变你的原始数组。


6
еҪ“然пјҢиҝҳжңүfor (1..$#arr) { ... $arr[$_] ... }иҝҷз§Қз”Ёжі•пјҲдҪҝз”ЁO(1)зҡ„еҶ…еӯҳиҖҢйқһO(N)пјүгҖӮ - ikegami
是的,有很多种方法可以做到这一点。虽然我可以展示所有方法,但我选择了其中一种。 - TLP
不完全相同。for 循环在 $_ 中提供当前数组索引。foreach 循环提供当前元素。 - Demnogonis
4
@Demnogonis说:"那不是真的。在Perl中,'for'和'foreach'是相同的。" - Borodin
2
@Borodin:哎呀,你说得对。我以为它是那样工作的...抱歉我胡说了。 - Demnogonis
@Demnogonis “foreach”关键字实际上是“for”关键字的同义词,因此您可以使用任何一个。引用自perldoc perlsyn - TLP

10

在循环之前,只需将第一个元素移除即可。

my @arr = ( 1..5 );
shift @arr; # Remove the first element and throw it away

foreach ( @arr ) {
    print "$_\n";
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接