コメントしたように、単純な反復でarray_count_values
and プロセスを利用できます。count
私のコード例では、これを独自の関数にラップしています。
$ratings = [3,3,2,3,3,1,3,4,5];
$percentages = function($ratings) {
$total = count($ratings);
$percentages = [];
foreach(array_count_values($ratings) as $value => $count) {
$percentages[$value] = $count / $total;
}
return $percentages;
};
print_r($percentages($ratings));
出力 (デモ):
Array (
[3] => 0.55555555555556
[2] => 0.11111111111111
[1] => 0.11111111111111
[4] => 0.11111111111111
[5] => 0.11111111111111
)
これがそれをかなりうまく示していることを願っています。そして再び(楽しみのために):
print_r($percentages(array_map('strval', $percentages($ratings))));
( array_count_values()
STRING および INTEGER 値のみをカウントできます)
出力:
Array (
[0.55555555555556] => 0.2
[0.11111111111111] => 0.8
)