2010-03-01 11 views
5

Cały podprogram kodu w tytule jest:

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

Próbuję przetłumaczyć skrypt Perla do PHP i mam trudności z niej (ja naprawdę nic nie wiem, ale Perl Próbuję).

Więc jak umieścić ten {$histogram{$value}++} w PHP?

Dzięki!

Odpowiedz

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

Wielkie dzięki, konforce! – Alex

11

{$histogram{$value}++} definiuje blok, aw Perlu ostatnia linia bloku nie wymaga średnika kończącego, więc jest równoważna z {$histogram{$value}++;}.

Teraz odpowiednik hash w PHP jest tablicą asocjacyjną i używamy [], aby uzyskać dostęp do elementów w tej tablicy:

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

Odpowiednikiem funkcji w PHP byłoby coś podobnego:

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

PHP ma natywną funkcję do wykonania tego: http://www.php.net/array_count_values ​​ – Matthew

+1

@Konformacja: Dobra uwaga. Ale właśnie pozwalałem OP znać, jak jego funkcję można przetłumaczyć na PHP używając podobnych konstrukcji. – codaddict

+0

Wielkie dzięki, chłopaki! – Alex

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

jest to pojedynczy wariant linia:

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