计算数组中值的百分比

Psy*_*che 2 php arrays

我有以下数组:

[ratings] => Array
 (
      [0] => 3
      [1] => 3
      [2] => 2
      [3] => 3
      [4] => 3
      [5] => 1
      [6] => 3
      [7] => 4
      [8] => 5
 )
Run Code Online (Sandbox Code Playgroud)

获得每个评级的百分比的最佳和最快方法是什么?比如现在有9个评分,5个评分“3”,所以评分“3”的比例是55.55%。

Jon*_*uhn 5

虽然他可能已经有了一些东西,但这就是我想出的。

<?php
$array = array(3,3,2,3,3,1,3,4,5);

function array_avg($array, $round=1){
    $num = count($array);
    return array_map(
        function($val) use ($num,$round){
            return array('count'=>$val,'avg'=>round($val/$num*100, $round));
        },
        array_count_values($array));
}

$avgs = array_avg($array);

/*
 * You can access any average/count like:
 * echo "The count of 3 is: {$avgs[3]['count']}";
 * echo "The average of 3 is: {$avgs[3]['avg']}";
 */

echo '<pre>'.print_r($avgs,1).'</pre>';
Run Code Online (Sandbox Code Playgroud)

输出:

Array
(
    [3] => Array
        (
            [count] => 5
            [avg] => 55.6
        )

    [2] => Array
        (
            [count] => 1
            [avg] => 11.1
        )

    [1] => Array
        (
            [count] => 1
            [avg] => 11.1
        )

    [4] => Array
        (
            [count] => 1
            [avg] => 11.1
        )

    [5] => Array
        (
            [count] => 1
            [avg] => 11.1
        )
)
Run Code Online (Sandbox Code Playgroud)

http://codepad.viper-7.com/yD9CQm