PHP中如何循环输出表格行,相同的列做合并

本文讲述了如何使用PHP处理数据库查询结果,将具有相同ID的数据行合并列显示。开发者首先通过静态代码测试理解`rowspan`的使用,然后编写PHP代码计算ID数量并根据ID合并价格列,以实现表格的优化显示。
摘要由CSDN通过智能技术生成

提示:首先这是一个简单的逻辑问题,看似复杂的逻辑起实都是从简单逻辑开始做起的,这也是网页前端显示经常遇到的问题,表格显示时合并列的问题。


一、当前需求

从数据库中查询出相应字段,查询后的数组类似于如下格式。

$data = array(
   array('id'=> 1035,'ordernum' => 'AU0036-033-3', 'price' => 1088),
   array('id'=> 1035,'ordernum' => 'AU0036-033-4', 'price' => 1088),
   array('id'=> 1043,'ordernum' => 'AU0036-033-5', 'price' => 1088),
   array('id'=> 77,  'ordernum' => 'AU0036-033-6', 'price' => 777),
   array('id'=> 77,  'ordernum' => 'AU0036-033-7', 'price' => 777),
);

要求显示成这样
ID相同时,价格合并列显示
在这里插入图片描述

二、开发步骤

正所谓逻辑再简单也是逻辑。也要一步一步做。

1.首先是用到静态代码测试

原来 rowspan可以垂直合并表格列
代码如下(示例):

    <table border="2">
        <tr>
            <td>订单号</td>
            <td>生产费用</td>
            <td>价格</td>
        </tr>
    <tr>
        <td>AU0036-033-3</td>
        <td rowspan="3">1088</td>
        <td>666</td>
    </tr>
    <tr>
        <td>AU0036-033-4</td>
        <td>666</td>
    </tr>
    <tr>
        <td>AU0036-033-5</td>
        <td>666</td>
    </tr>
    <tr>
        <td>AU0036-033-3</td>
        <td>1088</td>
        <td>666</td>
    </tr>

</table>

2.写PHP代码

第一步:计算 $data变量中所有 ID的值一样的数量为多少。
代码如下(示例):

//循环data,并把把id 的值做为key,id值一样的数量做为值
$id_count = array();
foreach( $data as $key=>$val){
    $id_count[$val['id']] =  $id_count[$val['id']] + 1;

}

这样就计算出了所有ID的值一样的数量,为以key和value的方式,更新到了 i d c o u n t 这个数组中第二步:循环输出 id_count这个数组中 第二步:循环输出 idcount这个数组中第二步:循环输出data数组
定义一个变量 i = 0 用来记数定一下数组 i=0用来记数 定一下数组 i=0用来记数定一下数组curr_id = array() 用来顺序计录所有数组中id的值
在foreach循环中让curr_id[ i ] 变量跟上次的记录中的 c u r r i d [ i]变量跟上次的记录中的curr_id[ i]变量跟上次的记录中的currid[i-1]判断是否一致。请看代码:

<table border="2">
    <tr>
        <td>订单号</td>
        <td>生产费用</td>
        <td>价格</td>
    </tr>
    <?php
       $i = 0;
       $curr_id=array();
       foreach ($data as $row){
        //当循环时,记录$row['id']相同的数量
           //记录当前循环次数
           $curr_id[$i] = $row['id'];
           echo "<br>curr_id=".$curr_id[$i]."===".$row['id']."<br>";
           $ii = 1;
           //如果curr_id与当前的$row['id']一致
           if ( $curr_id[$i-1] == $curr_id[$i] )
           {
               $ii= $ii + 1;
               echo '<br>i='.$i."<br>";
               echo 'ii='.$ii."<br>";
               echo '<br>=======';
           }
        ?>

    <tr>
        <td><?=$row['ordernum']?></td>
        <td><?=$row['id']?></td>
        <?php if ($ii == 1) { ?>
           <td rowspan="<?=$id_count[$row['id']]?>"><?=$row['price']?></td>
        <?php } ?>

    </tr>
    <?php
        $i++;
       } ?>

总结

编程的在于逻辑方法的累积。如果一个逻辑没搞明白,那么就拆分吧。分成多个逻辑。一直到能下手处理为止

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值