foreach循环中的值的总和

时间:2018-04-20 20:57:32

标签: php arrays foreach

我有这样的回复:

  "data": [
            {

                "pay": "2010000",

            },
            {

                "pay": "3010000",

            },
            {

                "pay": "3920000",

            },
]

    foreach ($data as $data) {
              $sum += $data['pay'];

              array_push($newArr, array(
                        "finalResult" => '0',
                     )
                    );
            }

我想得到(个人薪水除以所有薪水的总和)结果,并且应该将此值推入数组。我有一个foreach循环,我试图获得最终结果。但最终结果数组显示的数据不正确。有什么我想念的吗?

我尝试了两个像这样的foreach循环。但我得错了结果

foreach ($newArr as $newArr_key => $newArr_value) {

            if ($sum != 0) {
                $finalResult = $data['pay']/ $sum;


                if (isset($finalResult) && $finalResult != '') {
                    $newArr[$newArr_key]['finalResult'] = $finalResult;
                }

            } else {
                $finalResult = 'Division by Zero';
            }


            }

1 个答案:

答案 0 :(得分:2)

您可以array_sum()array_column()一起使用来计算“付费”的总和。 然后,您可以使用array_map()计算总和中各个和的平均值。

$data = [
    ["pay" => "2010000"],
    ["pay" => "3010000"],
    ["pay" => "3920000"],
];
$sum = array_sum(array_column($data, 'pay'));
$out = array_map(function($item) use($sum) {
    return ['finalResult' => $item['pay'] / $sum] ;
}, $data);
print_r($out);

输出:

Array
(
    [0] => Array
        (
            [finalResult] => 0.2248322147651
        )

    [1] => Array
        (
            [finalResult] => 0.33668903803132
        )

    [2] => Array
        (
            [finalResult] => 0.43847874720358
        )

)

或者:

$data = [
    ["pay" => "2010000"],
    ["pay" => "3010000"],
    ["pay" => "3920000"],
];
$sum = array_sum(array_column($data, 'pay'));
$out = array_map(function($item) use($sum) {
    return $item['pay'] / $sum ;
}, $data);
print_r($out);

输出:

Array
(
    [0] => 0.2248322147651
    [1] => 0.33668903803132
    [2] => 0.43847874720358
)