2010-03-11 2 views
-1

어떻게이 perl 서브 루틴을 PHP 함수로 변환합니까?perl에서 PHP 번역

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

답변

3
// &$... 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 ...; 
    } 
} 
+0

그리고이 표현에서 "&"의 목적은 무엇입니까? "... * $ distance_metric ($ cat_a, $ cat_b)}"? – Alex

1
foreach my $cat_a (keys %aggregate) 

은 $ 집계를 가정하는 연관 배열이다

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

된다 :

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) ; 
} 

나는 여기에 문제가 있습니다.

+0

AFAIK, PHP의 모든 배열은 연관입니다. – Tomalak