我有这样的回复:
"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';
}
}
答案 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
)