Php 对数组值求和

Php 对数组值求和,php,arrays,sum,Php,Arrays,Sum,我正在开发一个包含姓名和分数列的排名表。还有一个额外的列仅用于显示总分,即所有分数的总和 我正在使用数组_sum并从$scores数组中提取信息,在该数组中组织值。即使总和工作正常,它也只返回方括号中指定名称的值。Ie:array_sum$scores[Mike]为循环中的每一行打印37。另一方面,如果我只使用array_sum$scores,它会为循环中的每一行打印0!我需要数组中每个名称的正确总和 以下是我所拥有的: //scores values for each name $scores

我正在开发一个包含姓名和分数列的排名表。还有一个额外的列仅用于显示总分,即所有分数的总和

我正在使用数组_sum并从$scores数组中提取信息,在该数组中组织值。即使总和工作正常,它也只返回方括号中指定名称的值。Ie:array_sum$scores[Mike]为循环中的每一行打印37。另一方面,如果我只使用array_sum$scores,它会为循环中的每一行打印0!我需要数组中每个名称的正确总和

以下是我所拥有的:

//scores values for each name
$scores = array(
    "Mike"    => array(04, 03, 00, 07, 04, 07, 00, 01, 00, 07, 04),
    "Kyle"    => array(07, 01, 00, 03, 04, 01, 00, 07, 03, 04, 04),
    "Johnny"  => array(07, 07, 00, 03, 00, 04, 00, 01, 01, 04, 03),
    "Will"    => array(03, 04, 00, 03, 04, 07, 00, 01, 00, 07, 04),
    "Vasques" => array(03, 01, 00, 03, 04, 07, 00, 01, 00, 07, 07)
);

//start loop for rows
foreach($scores as $key=>$value) {
  echo "<tr>";
  //column for the names
  echo "<td>$key</td>";
  //Total Column
  echo "<td class='total' align='center' valign='middle'>" . array_sum($scores["Mike"]) . "</td>";
  //loop for columns where the score should be displayed
  for($x=0; $x<count($value); $x++) {
    echo "<td class='games tip' align='center' valign='middle'>".sprintf('%02d', $value[$x])."</td>";
  }
  echo "</tr>";
}
等等。。。37、34和33是总和。

尝试将array\u sum$scores[Mike]更改为array\u sum$scores[$key],并添加一个标记

更改此行:

echo "<td class='total' align='center' valign='middle'>" . array_sum($value) . "</td>";

排序多维数组您可以在参数中使用array\u multisort和SORT\u ASC或SORT\u DESC常量

array\u sum$分数[Mike]应该是array\u sum$值-另外,请注意,前导0告诉PHP数字是八进制的,00到07是相同的,但08和09是无效的,而010是十进制数字9。我真傻!当然应该是$value!!!!我应该学会在我绝望的时候不要再求助于堆栈溢出!哈哈哈谢谢你!我还有一个问题!可以从最高值到最低值排序吗?不要立即通过html显示值,而是将计算出的值拉入数组,然后使用数组\排序谢谢!就快到了!排序工作得很好,但是,名称列已被0到4之间的数字替换。为什么名字从名单上消失了???@Caioferari嗯,我的错,试着用uasort而不是usortI试着用uasort,效果很好!做得好!太棒了!然而,有一些奇怪的事情。我注意到,当我在数组中添加数字8和9时,它被转换为0,而且,它减去了一些点!奇怪的但这对我没有影响,因为我们在分数上最多能得到7分!无论如何谢谢你!差不多了!我得到的数组_sum$值应该是正确的方式!无论如何谢谢你!
$scores = array(
    "Mike"    => array(04, 03, 00, 07, 04, 07, 00, 01, 00, 07, 04),
    "Kyle"    => array(07, 01, 00, 03, 04, 01, 00, 07, 03, 04, 04),
    "Johnny"  => array(07, 07, 00, 03, 00, 04, 00, 01, 01, 04, 03),
    "Will"    => array(03, 04, 00, 03, 04, 07, 00, 01, 00, 07, 04),
    "Vasques" => array(03, 01, 00, 03, 04, 07, 00, 01, 00, 07, 07)
);
echo '<table>';
//start loop for rows
foreach($scores as $key=>$value) {
  echo "<tr>";
  //column for the names
  echo "<td>$key</td>";
  //Total Column
  echo "<td class='total' align='center' valign='middle'>" . array_sum($scores[$key]) . "</td>";
  //loop for columns where the score should be displayed
  for($x=0; $x<count($value); $x++) {
    echo "<td class='games tip' align='center' valign='middle'>".sprintf('%02d', $value[$x])."</td>";
  }
  echo "</tr>";
}
echo '</table>';
Mike    37  04  03  00  07  04  07  00  01  00  07  04
Kyle    34  07  01  00  03  04  01  00  07  03  04  04
Johnny  30  07  07  00  03  00  04  00  01  01  04  03
Will    33  03  04  00  03  04  07  00  01  00  07  04
Vasques 33  03  01  00  03  04  07  00  01  00  07  07
echo "<td class='total' align='center' valign='middle'>" . array_sum($value) . "</td>";
function cmp($a, $b) {
    return array_sum($b) - array_sum($a);
}
uasort($scores, "cmp");