【发布时间】:2016-01-02 10:48:20
【问题描述】:
我试图在从 PHP 查询的 html 页面上显示一个表格。这三个数组的长度总是相同的:
while ($row = sqlsrv_fetch_array($query))
{
$SUBJECT[] = "$row[SUBJECT]";
$SECTION[] = "$row[SECTION]";
$SCORE[] = "$row[SCORE]";
}
// I know this part is confusing. I will elaborate why i am doing this later
$count = [];
$total = [];
$perc = [];
for($i = 0, $length = count($SUBJECT); $i < $length; $i++)
{
if(!isset($count[$SECTION[$i]][$SUBJECT[$i]]))
{
$count[$SECTION[$i]][$SUBJECT[$i]] = 0;
$total[$SECTION[$i]][$SUBJECT[$i]] = 0;
}
$count[$SECTION[$i]][$SUBJECT[$i]]++;
$total[$SECTION[$i]][$SUBJECT[$i]] += $SCORE[$i];
$perc[$SECTION[$i]][$SUBJECT[$i]] = round($total[$SECTION[$i]][$SUBJECT[$i]]/$count[$SECTION[$i]][$SUBJECT[$i]],2);
}
echo "<table border='1' cellpadding='5' cellspacing='0' style='border-collapse:collapse;'>";
echo "<tr><td></td><td>" . implode("</td><td>", array_unique($SUBJECT)) . "</td></tr>";
foreach(array_unique($SECTION) as $v)
{
echo "<tr><td>$v</td>";
foreach(array_unique($SUBJECT) as $key)
echo "<td>" . (isset($perc[$v][$key]) ? $perc[$v][$key] : "0") . "</td>";
echo "</tr>";
}
echo "</table>";
这会在我的 html 表格上输出一个类似这样的表格(这个表格中的值已经是平均值):
Math Science English History PE
Section A 90 50 40 60 100
Section B 60 50 70 70 90
Section C 60 50 70 20 80
这是我需要帮助的: 我想在显示所有科目平均值的部分下创建一个整体行。所以看起来像:
Overall 70 50 60 50 90
我知道我会在foreach(array_unique($SECTION) as $v) 之后这样开始:
}
echo "<tr><td>Overall</td>";
echo "<td>". ."</td>";
echo "</tr>";
echo "</table>;
现在我想我需要从一开始就以不同的方式重新排列数组:
$SUBJECT[] = ('MATH', 'SCIENCE', 'HISTORY', 'MATH', 'PE'.....)
$SECTION[] = ('A', 'C', 'B', 'B', 'A'...)
$SCORE[] = (50, 80, 70, 80, 60 ...)
所以那个小代码块的重点是创建这个有主题和部分的表并告诉平均分数(基本上 sql 有每个学生,所以我在这里平均分数,所以我可以显示每个部分的数据和每个科目)。
那么如何为主题和部分创建一个整体行?
更新: 我刚刚意识到我做的比它需要的更难:
我想我的问题是我有两个数组:
$SUBJECT[] = ('MATH', 'SCIENCE', 'HISTORY', 'SCIENCE', 'PE', 'MATH', 'PE', 'PE');
$SCORE[] = (50, 100, 70, 60, 90, 70, 80, 100);
我想创建一个新数组,显示给我这个平均值:
所以我打电话给:$newarray['MATH'] = 60; $newarray['SCIENCE'] = 80; $newarray['PE'] = 90; etc.
【问题讨论】:
标签: php mysql arrays sql-server multidimensional-array