PHP遍历数组求和

skkina 2020-06-08 05:06:40

如图,我先通过SQL语句查询到符合条件的记录,下面我该如何写PHP语句,把查询出来的数据按照“班级”字段进行依次统计“课时”的和值并输出呢?
...全文
400 点赞 收藏 10
写回复
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
很訾 2020-06-16
这个跟你问题相同 https://bbs.csdn.net/topics/396829563?page=1#post-411761644
回复
很訾 2020-06-16
层次少了

foreach($rows as $row){
    $data[$row['banji']]['rows'][] = $row;
    $data[$row['banji']]['zongkeshi'] = $row['keshi'] + @$data[$row['banji']]['zongkeshi'];
}
//$data = array_values($data); //如果你不想要关联数组...
var_dump($data);
ps:怎么不能编辑自己回的帖子啊,也不能删除?
回复
很訾 2020-06-16
依靠数组整合而不靠SQL预计来拆分数据也是可以实现的 假如你SQL语句拿到的所有数据的结果集为$rows $rows结构是应该是这样的

[
    ['banji'=>'一班','keshi'=>3],
    ['banji'=>'二班','keshi'=>4]
]
那么就可以这样来统计

foreach($rows as $row){
    $data[$row['banji']] = $row;
    $data[$row['banji']]['zongkeshi'] = $row['keshi'] + @$data[$row['banji']]['zongkeshi'];
}
//$data = array_values($data); //如果你不想要关联数组...
var_dump($data);
回复
SinMu-L 2020-06-15
引用 6 楼 skkina 的回复:
[quote=引用 5 楼 SinMu-L 的回复:] [quote=引用 3 楼 skkina 的回复:] [quote=引用 2 楼 SinMu-L 的回复:] 你的这个sql语句用PHP查询出来的结果是个二位数组,用1 层for循环就可以拿到数据,用个求和变量就可以统计总和,在for循环里面输出每个keshi。 假设arrSql为PHP执行生气了语句的结果 $sum =0 for $a in $arrSql echo a['keshi'] $sum +=$a['keshi'] echo "总课时为".$sum 大致就是这样的思路吧,希望对你有帮助
================================================================================= 我想要最终的输出结果是: 1班 A课时 2班 B课时 3班 C课时 可以做到吗?谢谢![/quote] 这个是可以的 ,你是需要代码么[/quote] ======================================================== 是的,能写下代码吗?完整的[/quote] 我用的模拟数据,应该是可以类比的 数据库内容如下,sql语句"select Cname,sum(Credit) from course GROUP BY Cname" php的代码如下:

<?php

// 基本信息
$servername = "localhost";
$username = "recode";
$password = "recode_passwd";
$db_name = "recode";
$dsn = "mysql:host=$servername;dbname=$db_name";
try {
    // 对数据库进行连接
    $conn = new PDO($dsn, $username, $password);
    $sql = "select Cname,sum(Credit) as cred from course GROUP BY Cname";

    //获取一个二维数组
    $stms = $conn->query($sql)->fetchAll();
    //var_dump($stms);
//    foreach ($stms as $arr){
//        var_dump($arr);
//        echo $arr['Cname']."的总学分为:".$arr['cred']."<br>";    
//    }
    echo "<table border='1' cellpadding='5' cellspacing='0' align='center' width='60%'>";
        echo "<tr align='center' bgcolor='#87ceeb'>";
        echo "<td>";
        echo "课程名";
        echo "</td>";
        echo "<td>";
        echo "课程总学分";
        echo "</td>";
    echo "</tr>";
    //遍历二维数组
    foreach ($stms as $arr) {

        echo "<tr align='center'>";
            echo "<td>";
            echo $arr['Cname'];
            echo "</td>";
            echo "<td>";
            echo $arr['cred'];
            echo "</td>";
        echo "</tr>";

        
    }
    echo "</table>";
}
catch(PDOException $e)
{
    echo $e->getMessage();
}
查询的结果如下:
回复
skkina 2020-06-15
引用 5 楼 SinMu-L 的回复:
[quote=引用 3 楼 skkina 的回复:] [quote=引用 2 楼 SinMu-L 的回复:] 你的这个sql语句用PHP查询出来的结果是个二位数组,用1 层for循环就可以拿到数据,用个求和变量就可以统计总和,在for循环里面输出每个keshi。 假设arrSql为PHP执行生气了语句的结果 $sum =0 for $a in $arrSql echo a['keshi'] $sum +=$a['keshi'] echo "总课时为".$sum 大致就是这样的思路吧,希望对你有帮助
================================================================================= 我想要最终的输出结果是: 1班 A课时 2班 B课时 3班 C课时 可以做到吗?谢谢![/quote] 这个是可以的 ,你是需要代码么[/quote] ======================================================== 是的,能写下代码吗?完整的
回复
大小侠 2020-06-10
foreach($arr as $v){
echo $c['banji']."   ".$c['keishi'].'<br/>';
}
回复
skkina 2020-06-10
引用 2 楼 SinMu-L 的回复:
你的这个sql语句用PHP查询出来的结果是个二位数组,用1 层for循环就可以拿到数据,用个求和变量就可以统计总和,在for循环里面输出每个keshi。 假设arrSql为PHP执行生气了语句的结果 $sum =0 for $a in $arrSql echo a['keshi'] $sum +=$a['keshi'] echo "总课时为".$sum 大致就是这样的思路吧,希望对你有帮助
================================================================================= 我想要最终的输出结果是: 1班 A课时 2班 B课时 3班 C课时 可以做到吗?谢谢!
回复
SinMu-L 2020-06-10
引用 3 楼 skkina 的回复:
[quote=引用 2 楼 SinMu-L 的回复:] 你的这个sql语句用PHP查询出来的结果是个二位数组,用1 层for循环就可以拿到数据,用个求和变量就可以统计总和,在for循环里面输出每个keshi。 假设arrSql为PHP执行生气了语句的结果 $sum =0 for $a in $arrSql echo a['keshi'] $sum +=$a['keshi'] echo "总课时为".$sum 大致就是这样的思路吧,希望对你有帮助
================================================================================= 我想要最终的输出结果是: 1班 A课时 2班 B课时 3班 C课时 可以做到吗?谢谢![/quote] 这个是可以的 ,你是需要代码么
回复
SinMu-L 2020-06-08
你的这个sql语句用PHP查询出来的结果是个二位数组,用1 层for循环就可以拿到数据,用个求和变量就可以统计总和,在for循环里面输出每个keshi。 假设arrSql为PHP执行生气了语句的结果 $sum =0 for $a in $arrSql echo a['keshi'] $sum +=$a['keshi'] echo "总课时为".$sum 大致就是这样的思路吧,希望对你有帮助
回复
沉沦的小孩 2020-06-08
直接sql语句查出来不好吗
回复
相关推荐
发帖
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
帖子事件
创建了帖子
2020-06-08 05:06
社区公告
暂无公告