计算数组中值的百分比
I have the following array $browser
:
Array
(
[2] => Array
(
[0] => Internet Explorer
[1] => 5809
)
[3] => Array
(
[0] => Chrome
[1] => 9205
)
[4] => Array
(
[0] => Safari
[1] => 5288
)
[5] => Array
(
[0] => Opera
[1] => 102
)
Is there a way to calculate for each element the percentage . I tried this funtcion:
foreach ($browser as $key => $value){
print_array(array_avg($browser[$key][1]) );
}
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));
}
Is there an error in my code? Thanks!
我有以下数组 有没有办法计算每个元素的百分比。我尝试了这个功能: p>
我的代码中是否有错误?
谢谢! p>
div> $ browser code>: p>
Array
(
[2] => Array
(
[0] => Internet Explorer
[1] => 5809
)
[3] =>数组
(
[0] => Chrome
[1] => 9205
)
[4] =>数组
(
[0] => Safari
[1] => 5288
)
[5] =>数组
(
[0] => Opera
[1] => 102
)
code> pre>
foreach($ browser) as $ key => $ value){
print_array(array_avg($ browser [$ key] [1]));
}
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($ ar ray));
}
code> pre>
Try something like this:
// calculate the sum; first transform the array in something with only integers, then sum that array
$sum = array_sum(array_map(function ($a) { return $a[1]; }, $browser));
// walk through the array, print the percentage (value / sum) for each browser
foreach ($browser as $info) {
echo 'Percentage for browser '.$info[0].' = '.round(($info[1]/$sum)*100).'%<br>';
}