перевод с perl на php - PullRequest
       15

перевод с perl на php

0 голосов
/ 11 марта 2010

Как вы переводите эту подпрограмму 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) {
    }
}

Ответы [ 2 ]

3 голосов
/ 11 марта 2010
// &$... 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 ...;
  }
}
1 голос
/ 11 марта 2010
foreach my $cat_a (keys %aggregate)

становится

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

при условии, что $ aggregate является ассоциативным массивом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...