我想显示从PHP查询的HTML页面上的表格。这三个阵列将始终具有相同的长度:从PHP的SQL查询操作数组来显示它在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都有,所以我平均分因为我可以显示每个部分和每个主题的数据)。
那么如何为主题和部分创建一个整体行?
UPDATE: 我才意识到我比它需要这个困难:
我想我的问题是我有两个数组:
$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.
我看着那个。由于无法在数组中使用相同的密钥,因此无法使用它。它只会显示最近的价值。 – USER420