【发布时间】:2013-05-04 00:27:18
【问题描述】:
我想创建一个循环,遍历一个数组 (@array1) 中的所有元素,如果在另一个数组 (@array2) 中找到相同的元素,我想要第三个数组 (@array3) 中的值) 将相同的索引添加到第一个数组并从第三个数组中删除。我尝试过这种方式,但是带有 if 语句的行在未初始化的值上运行,并且它永远循环。
foreach my $elem1 (@array1){
my $i = 0;
while ($i < scalar @array2){
if($array2[$i]==$elem1){
push (@array1, $array3[$i]);
delete $array2[$i];
}
else{
$i++;
}
}
}
【问题讨论】:
-
delete函数主要用于散列,而不是数组。你想要splice。见perldoc.perl.org/functions/delete.html。更一般地说,有更好的方法来解决这个问题。 -
您下面的 cmets 表明您错误地描述了您想要的算法。请向我们展示您想要什么的清晰示例 - 向我们展示在您执行所需操作之前和之后数组的外观。
标签: arrays perl if-statement