Php,计算多个项目的百分比

Php, calculate percentage on multiple items

我总共有 5 个项目,我想根据提交的 [data] 计算百分比。结果将用于饼图。

Array
(
    [0] => Array
        (
            [label] => Item1
            [data] => 849
        )

    [1] => Array
        (
            [label] => Item2
            [data] => 657
        )

    [2] => Array
        (
            [label] => Item3
            [data] => 571
        )

    [3] => Array
        (
            [label] => Item4
            [data] => 538
        )

    [4] => Array
        (
            [label] => Item5
            [data] => 446
        )

)

使用:

(5/[data])*100

没有产生正确的结果,我不确定如何进行正确的计算。

我觉得你想要的是先把所有的项目加起来得到总和,然后再确定每个项目的百分比

$sum = array[0]['data'] + array[1]['data'] ...
$pc0 = array[0]['data'] / $sum * 100;
...

我将循环留给 OP。

// 编辑: 至于没有更好的办法,这里有一个reduce函数来求和:

$sum = array_reduce($data_array, function($v1, $v2){ return $v1 + $v2['data']; });
<?php 
$array=array(0=>array('label'=>"Item1",'data'=>849),
1=>array('label'=>"Item2",'data'=>657),
2=>array('label'=>"Item3",'data'=>571),
3=>array('label'=>"Item4",'data'=>538),
4=>array('label'=>"Item5",'data'=>446)
);$val=0;
foreach($array as $value){
//print_r($value['data']);
$val+=$value['data'];
}
echo "output  =  ".(5/$val)*100;
?>

不需要循环。 array_column & array_sum 会有所帮助。你可以试试这个 -

$a= array(
array('label'=>"Item1",'data'=>849),
array('label'=>"Item2",'data'=>657),
array('label'=>"Item3",'data'=>571),
array('label'=>"Item4",'data'=>538),
array('label'=>"Item5",'data'=>446)
);

echo "Percentage : " . ((5 / (array_sum(array_column($a, 'data')))) * 100);

输出

Percentage : 0.16334531198955

如果您希望代码灵活:

$array= [
      0 => [
        'label' => 'Item1',
        'data' => 849,
        ],
      1 => [
        'label' => 'Item1',
        'data' => 849,
        ],
      2 => [
        'label' => 'Item1',
        'data' => 849,
        ],
      3 => [
        'label' => 'Item1',
        'data' => 849,
      ],
      4 => [
        'label' => 'Item1',
        'data' => 849,
        ],
      5 => [
        'label' => 'Item1',
        'data' => 849,
        ]
];
   foreach($array as $key => $val){
     $sum +=$val['data'];
   }
  echo "output  =  ".(count($val['data'])/$sum)*100;
?>

使用 loop 方法简单

$arr = array
(
0 => array
    (
        "label" => "Item1",
        "data" => 849,
    ),

1 => array
    (
        "label" => "Item2",
        "data" => 657,
    ),

2 => array
    (
        "label" => "Item3",
        "data" => 571,
    ),

3 => array
    (
        "label" => "Item4",
        "data" => 538,
    ),

4 => array
    (
        "label" => "Item5",
        "data" => 446,
    ),

);

$totalElement = count($arr);
$data = 0;
foreach ($arr as $key => $value) {
    $data += $value['data'];
}

echo ($totalElement/$data)*100;

结果

 0.16334531198955