2010-03-01 17 views
5

başlığında kodu için tüm alt rutindir:

sub histogram { # Counts of elements in an array 
    my %histogram =() ; 
    foreach my $value (@_) {$histogram{$value}++} 
    return (%histogram) ; 
} 

(Gerçekten Perl şey bilmiyorum ben PHP için bir Perl komut dosyası çevirmek için çalışıyorum ve onunla zorluklar yaşıyorum ama Deniyorum).

Peki bu {$histogram{$value}++}'u PHP'ye nasıl koyarım?

Teşekkürler!

cevap

5
<?php 
    $histogram = array_count_values($array); 
?> 
+0

Çok teşekkürler, teşekkürler! – Alex

11

{$histogram{$value}++} bir bloğu tanımlar ve Perl'de bir satırın son satırının sonlanma noktalı virgülüne ihtiyacı yoktur, bu nedenle {$histogram{$value}++;}'a eşdeğerdir.

Şimdi PHP'de karma eşdeğer bir ilişkisel dizidir ve biz bu dizideki öğeleri erişmek için [] kullanın:

$hash{$key} = $value;  // Perl 
$ass_array[$key] = $value; // PHP 

PHP eşdeğer fonksiyon olacaktır gibi bir şey:

function histogram($array) { 
    $histogram = array(); 
    foreach($array as $value) { 
     $histogram[$value]++; 
    } 
    return $histogram; 
} 
+1

PHP'nin yerel bir işlevi vardır: http://www.php.net/array_count_values ​​ – Matthew

+1

@Konforce: İyi nokta. Ama ben sadece OP'nin işlevinin benzer yapıları kullanarak PHP'ye nasıl çevrilebileceğini bilmesine izin veriyordum. – codaddict

+0

Çok teşekkürler, çocuklar! – Alex

0
foreach my $value (@_) {$histogram{$value}++} 

O olduğu tek bir satır varyantı

foreach my $value (@_) { 
    $histogram{$value}++ 
}