通过计算相同键的平均数来在PHP中展平数组

时间:2017-05-14 13:16:32

标签: php arrays multidimensional-array

我在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]
];

知道如何做到这一点?

3 个答案:

答案 0 :(得分:0)

这里在第一个循环中,我们迭代输入数组以根据month收集值,而在第二个循环中,我们使用array_walk循环遍历数组以找到平均值。使用函数array_sumcount

Try this code snippet here

<?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);