Что делает {$histogram {$value} ++} означают в Perl?

Целая подпрограмма для кода в заголовке:

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

Я пытаюсь перевести сценарий Perl в PHP, и я испытываю трудности с ним (я действительно не знаю ничего Perl, но я пробую).

Таким образом, как я помещаю это {$histogram{$value}++} в PHP?

Спасибо!

5
задан Gabe 1 March 2010 в 06:17
поделиться

3 ответа

<?php
  $histogram = array_count_values($array);
?>
5
ответ дан 18 December 2019 в 10:44
поделиться

{$ 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;
}
11
ответ дан 18 December 2019 в 10:44
поделиться
foreach my $value (@_) {$histogram{$value}++}

Это однострочный вариант:

foreach my $value (@_) {
    $histogram{$value}++
}
0
ответ дан 18 December 2019 в 10:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: