【问题标题】:perl to php translationperl 到 php 的翻译
【发布时间】:2011-01-26 11:18:15
【问题描述】:

如何将这个 perl 子例程转换为 PHP 函数?

sub disagreement {
  my $disagreement = 0;
  my %aggregate = () ;
  foreach my $item (@_) {$aggregate{$item}++}
  foreach my $cat_a (keys %aggregate) {
    foreach my $cat_b (keys %aggregate) {
      if ($cat_a != $cat_b) {$disagreement += $aggregate{$cat_a} * $aggregate{$cat_b} * &$distance_metric ($cat_a , $cat_b)}
    }
  }
  $disagreement /= @_ * (@_ - 1) ;
  return ($disagreement) ;
}

我这里有个问题:

foreach my $cat_a (keys %aggregate) {
    foreach my $cat_b (keys %aggregate) {
    }
}

【问题讨论】:

    标签: php perl arrays


    【解决方案1】:
    // &$... is a value reference instead of a value copy, when in doubt use $...
    foreach ($aggregate as $cat_a => &$val_a) {
      foreach ($aggregate as $cat_b => &$val_b) {
        if ($cat_a !== $cat_b) $disagreement += $val_a * $val_b ...;
      }
    }
    

    【讨论】:

    • 这个表达式中“&”的目的是什么:“... * &$distance_metric ($cat_a , $cat_b)}” ?
    【解决方案2】:
    foreach my $cat_a (keys %aggregate)
    

    变成

    foreach ($aggregate as $key => $cat_a)
    

    假设 $aggregate 是一个关联数组。

    【讨论】:

    • AFAIK,PHP 中的所有数组都是关联的。
    猜你喜欢
    • 2011-03-30
    • 2016-01-04
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 2011-02-27
    • 2010-11-07
    • 2011-10-20
    • 1970-01-01
    相关资源
    最近更新 更多