【问题标题】:Array Manipulation with Sql query from php to display it on HTML?使用 php 中的 Sql 查询进行数组操作以在 HTML 上显示它?
【发布时间】: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


    【解决方案1】:

    我觉得你需要这个http://php.net/manual/en/function.array-combine.php

        $newarray = array_combine($SUBJECT, $SCORE);
    

    【讨论】:

    • 我看过了。我无法使用它,因为数组中不能有相同的键。它只会显示最近的值。
    猜你喜欢
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-14
    • 1970-01-01
    • 2014-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多