2010-03-01 84 views
5

整個子程序在標題的代碼是:

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

我想翻譯一個Perl腳本,PHP和我在與它的困難(我真的不知道Perl中的任何東西,但我嘗試着)。

那麼如何將這{$histogram{$value}++}到PHP?

謝謝!

回答

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

非常感謝,konforce! – Alex 2010-03-01 07:47:05

11

{$histogram{$value}++}定義了一個塊,在Perl中,塊的最後一行不需要終止分號,所以它相當於{$histogram{$value}++;}

現在散列的PHP中等效是一個關聯數組和我們使用[]來訪問元素陣列中:

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

PHP中的等效功能會是這樣的:

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

PHP有一個本地函數來做到這一點:http://www.php.net/array_count_values – Matthew 2010-03-01 06:12:21

+1

@Konforce:好點。但我只是讓OP知道如何使用類似的構造將他的函數轉換爲PHP。 – codaddict 2010-03-01 06:14:59

+0

非常感謝,夥計們! – Alex 2010-03-01 07:46:19

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

它是一個單行的變體:

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