gpt4 book ai didi

perl - 如何在foreach循环中删除数组元素?

转载 作者:行者123 更新时间:2023-12-04 16:31:37 24 4
gpt4 key购买 nike

我想遍历一个数组并检查某些元素是否等于特定条件。
例如,我想删除包含 "O" 的元素,所以我可以这样做..

@Array = ("Apple","Orange","Banana");
for ($i=0 ; $i <= $#Array ; $i++) {
if( index($Array[$i],"O") >= 0 ) {
splice(@Array,$i,1);
}
}

但如果我想使用 foreach循环替换 for循环,我该怎么办?因为在 foreach循环,没有索引所以我不能使用 splice ,除非我设置了一个变量来存储它。

最佳答案

如果要删除元素,更好的工具是 grep :

@array = grep { !/O/ } @array;

从技术上讲,可以使用 for循环,但你必须跳过一些箍才能做到这一点,或者复制到另一个数组:
my @result;
for (@array) {
if (/O/) {
push @result, $_;
}
}

你应该知道 forforeach是别名,它们做的事情完全一样。这是您正在考虑的 C 风格语法:
for (@array) { print $_, "\n"; }        # perl style, with elements
for (my $x = 0; $x <= $#array; $x++) { # C-style, with indexes
print $array[$x], "\n";
}

关于perl - 如何在foreach循环中删除数组元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17762278/

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