数组不总和高于7的数字

时间:2014-06-26 22:46:27

标签: php arrays numbers sum

问题:这就是排名。此等级应包含从零到十的数字。但是,我注意到存储值的数组的总和不会输入高于07的数字。因此,它只能将数字从00到07加起来!我找不到错误。

代码:

<tbody>
<?php
  $scores = array(
  "Kyle"   => array("-", 04, 04, 06, 04, 05, 04, 04),
  "Bill"   => array("-", 04, 09, 04, 07, 08, 04, 10),
  "Adam"   => array("-", 04, 04, 04, 01, 04, 04, 04),
  "Johnny" => array("-", 08, 04, 10, 04, 08, 08, 04),
?>

###function to return the sum
function cmp($a, $b) {
  return array_sum($b) - array_sum($a);
}

####sort the ranking into the td
uasort($scores, "cmp");
foreach($scores as $key=>$value) {
  echo "<tr>";
  echo "<th>$key</th>";
  echo "<td class='total' align='center' valign='middle'>" . array_sum($value) . "</td>";
  for($x=0; $x<count($value); $x++) {
    echo "<td class='games tip' align='center' valign='middle'>".sprintf('%02d', $value[$x])."</td>";
  }
  echo "</tr>";
}
?>
</tbody>

谢谢!

2 个答案:

答案 0 :(得分:3)

0开头的数字被视为八进制数字,并且可能只包含07的数字。任何其他数字都被视为分隔符,而不是数字的一部分。因此0809被解释为0

摆脱所有领先的数字:

  $scores = array(
  "Kyle"   => array("-", 4, 4, 6, 4, 5, 4, 4),
  "Bill"   => array("-", 4, 9, 4, 7, 8, 4, 10),
  "Adam"   => array("-", 4, 4, 4, 1, 4, 4, 4),
  "Johnny" => array("-", 8, 4, 10, 4, 8, 8, 4),
  );

答案 1 :(得分:0)

在PHP和许多其他语言中,带有前导0的文字编号被认为是以八进制编写的(基数为8)。您可能已经在Unix文件权限中看到了这一点,其中0755表示3个字节,而不是十进制数&#34;七百五十五&#34;。

十六进制(基数16)和二进制(基数2)存在类似的符号;所以10表示10,但010表示8,0x10表示16,而0b表示2。

由于没有数字&#39; 8&#39; &安培; &#39; 9&#39;在八进制中,像08和09这样的值将无法正常工作。删除前导零,你应该没事。