【问题标题】:Perl equivalent to Php foreach loopPerl 等价于 Php foreach 循环
【发布时间】:2012-05-23 21:03:48
【问题描述】:

我正在寻找与以下 php 代码等效的 Perl:-

foreach($array as $key => $value){
...
}

我知道我可以像这样做一个 foreach 循环:-

foreach my $array_value (@array){
..
}

这将使我能够使用数组值进行操作 - 但我也想使用键。

我知道有一个 Perl 散列可以让你设置键值对,但我只想要数组自动给你的索引号。

【问题讨论】:

    标签: php perl foreach


    【解决方案1】:

    如果您使用的是 Perl 5.12.0 或更高版本,您可以在数组上使用 each

    my @array = 100 .. 103;
    
    while (my ($key, $value) = each @array) {
        print "$key\t$value\n";
    }
    

    输出:

    0       100
    1       101
    2       102
    3       103
    

    perldoc each

    【讨论】:

    • 是的,懒惰的while 比急切的foreach 更可取。
    • @Axeman:这是一个很好的观点。即使我的四元素数组的性能提升可以忽略不计,这肯定是一个值得注意的区别。
    【解决方案2】:

    试试:

    my @array=(4,5,2,1);
    foreach $key (keys @array) {
        print $key." -> ".$array[$key]."\n";
    }
    

    适用于哈希和数组。 在数组的情况下,$key 保存索引。

    【讨论】:

      【解决方案3】:

      我猜最接近的 Perl 是这样的:

      foreach my $key (0 .. $#array) {
        my $value = $array[$key];
      
        # Now $key and $value contains the same as they would in the PHP example
      }
      

      从 Perl 5.12.0 开始,您可以在数组和散列上使用 keys 函数。这可能更具可读性。

      use 5.012;
      
      foreach my $key (keys @array) {
        my $value = $array[$key];
      
        # Now $key and $value contains the same as they would in the PHP example
      }
      

      【讨论】:

      • 感谢所有这些答案。我的问题解决了!我真的不想投票选出最佳答案,因为它们都很好。
      • 如果我是你,我会接受 flesk 的回答。 each 解决方案比其他任何示例都更接近 PHP 版本。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-04
      • 2016-09-26
      • 2012-07-19
      • 2013-11-23
      • 2020-05-09
      相关资源
      最近更新 更多