我正在从我的数据库中获取所有工作的数据,我得到了正确的行。但是现在我需要将它们相加并计算平均值。
我当前的代码是:
$new = array();
foreach($testquery as $key){
$new[$key['school']][$key['city_id']][] = array('points'=>$key['points']);
}
我的数组结构是这样的:
[Etelä-Tapiolan lukio] => Array
(
[4] => Array
(
[0] => Array
(
[points] => 5
)
[1] => Array
(
[points] => 5
)
)
)
[Oulunsalo lukio] => Array
(
[8] => Array
(
[0] => Array
(
[points] => 4
)
[1] => Array
(
[points] => 6
)
[2] => Array
(
[points] => 6
)
[3] => Array
(
[points] => 7
)
)
)
[Limingan lukio] => Array
(
[2] => Array
(
[0] => Array
(
[points] => 4
)
[1] => Array
(
[points] => 5
)
[2] => Array
(
[points] => 3
)
[3] => Array
(
[points] => 3
)
[4] => Array
(
[points] => 4
)
[5] => Array
(
[points] => 6
)
[6] => Array
(
[points] => 4
)
[7] => Array
(
[points] => 6
)
[8] => Array
(
[points] => 3
)
[9] => Array
(
[points] => 3
)
[10] => Array
(
[points] => 5
)
[11] => Array
(
[points] => 7
)
)
)
)
数组大小没有限制。现在我需要对点进行求和,然后将总和除以每个数组的点数。
输出应为:
Etelä-Tapiolan lukio: 5 (解释 5+5 = 10/2 = 5(
奥伦萨洛卢基奥: 5,75 (解释 4+6+6+7 = 23/4 = 5,75(
黎明安路基奥:4.41(解释4+5+3+3+4+6+6+6+3+3+5+7 = 53/12 = 4.41(
我还需要 ID = [4],[8],[2] 号
[Etelä-Tapiolan lukio] => Array
(
[4] => Array
[Oulunsalo lukio] => Array
(
[8] => Array
[Limingan lukio] => Array
(
[2] => Array
最终输出将是:
<td class="4">Etelä-Tapiolan lukio:><span> 5 </span></td>
<td class="8">Oulunsalo lukio:><span> 5,75 </span></td>
<td class="2">Limingan lukio:><span> 4.41 </span></td>
通常,在这种情况下,您可以只使用 foreach。例:
$total = array();
foreach ($new as $name_key => $stats) {
foreach($stats as $class => $info) {
$count = count($info); // get the count of individual points
$sum = array_sum(array_map(function($piece){ // then, sum them
return $piece['points']; // return each points
}, $info));
$total[$name_key][$class] = sprintf('%1.2f', $sum / $count); // normal average
}
}
?>
<!-- present it on a table -->
<table>
<tr>
<?php foreach ($total as $name => $value): ?>
<?php foreach ($value as $class => $ave): ?>
<td class="<?php echo $class; ?>"><?php echo $name; ?><span><?php echo $ave; ?></span></td>
<?php endforeach; ?>
<?php endforeach; ?>
</tr>
</table>
示例输出