我在PHP中有一个数组,显示每月的平均数。现在,此数组可以包含同一个月的多个条目。如果是这种情况,则必须将数字相加并除以每月的条目数:
E.g。 5月=(3.15 + 2.29 + 2.36)/ 3 = 2.6
输入:
$result = [
0 => ['April' => 4.36],
1 => ['May' => 3.15],
2 => ['May' => 2.29],
3 => ['May' => 2.36]
];
输出:
$result = [
[0] => ['April' => 4.36],
[1] => ['May' => 2.60]
];
知道如何做到这一点?
答案 0 :(得分:0)
这里在第一个循环中,我们迭代输入数组以根据month
收集值,而在第二个循环中,我们使用array_walk
循环遍历数组以找到平均值。使用函数array_sum
和count
<?php
ini_set('display_errors', 1);
$Array = [
0 => ['April' => 4.36],
1 => ['May' => 3.15],
2 => ['May' => 2.29],
3 => ['May' => 2.36]
];
$result=array();
//Gathering values according to months.
foreach ($Array as $value)
{
$result[key($value)][]=$value[key($value)];//using key function to get the first key of array
}
//using array_sum for finding sum of array.
array_walk($result,function($value,$key) use (&$newResult){
$newResult[] = array($key =>array_sum($value)/count($value));
});
print_r($newResult);
答案 1 :(得分:0)
您可以使用多维数组。
多维数组是数组中的数组,有多少是你想要的。
https://www.w3schools.com/php/php_arrays_multi.asp
http://php.net/manual/en/language.types.array.php
所以,关于你的代码,让我们说11月有这些数字: 4,3,2和1。
你会这样做:
$result = array(
"November" => array(4,3,2,1)
)
然后你会找到数组的长度,通过这样做来访问多维对象:
$result["November"][0]
(这将输出4)
然后编写一个foreach脚本来确定平均值。我会留给你的。
答案 2 :(得分:0)
试试这个,检查 live demo
$array = [];
foreach($result as $v)
{
$array[key($v)][] = current($v);
}
$result = array_map(function($v){return array_sum($v)/count($v);}, $array);