效果图:

控制器(1种):

//显示列表
    public function actionList()
    {
        //实例化对象
        $model= new Qiu();
        $country = \Yii::$app->db;
        //查询数据
        $data = $country->createCommand("select * from qiu join region on qiu.region_id=region.region_id")->queryAll();
        $region_ids = $country->createCommand("select region_id from region")->queryAll();
        $region = $country->createCommand("select * from region")->queryAll();
        //遍历数组
        $ids = array();
        $names = array();
        $count = array();
        //遍历区域ID
        foreach ($region_ids as $key => $v)
        {
            $ids[$key] = $v['region_id'];
        }
        //print_r($ids);die;
        //遍历球队
        foreach ($ids as $key => $val)
        {
            $data =Qiu::find()->where(['region_id'=>$val])->asArray()->all();
            $count[]=count($data);
            $rows[$val] = $data;
        }
        //print_r($rows);die;
        //根据所有记录进行遍历,显示最多行数
        $ji =  max($count);
        $arr = array();
        //找出对应的球队
        for($i=0;$i<$ji;$i++)
        {
            foreach($rows as $key => $val)
            {
                if(isset($val[$i]))
                {
                    $arr[$i][$key] = $val[$i]['q_name'];
                }
                else
                {
                    $arr[$i][$key] = '';
                }
            }
        }
        //var_dump($arr);die;
        //分配数据
        return $this->render('list',['arr'=>$arr,'region'=>$region]);
    }

(2种):
 
    public function actionList1()
   {
        //实例化模型层
        $region = new Region;
        $qiu = new Qiu;
        //取出区域表的iQiud和所有数据,队表数据
        $region_ids = $region->find()->select('region_id')->column();
        $areas = $region->find()->asArray()->all();
        $team = $qiu->find()->asArray()->all();
        
        $count = array();
        $info = array();
        foreach ($region_ids as $aid) {//1,2,3--6
            foreach ($team as $key=>$val) {
                if($val['region_id'] == $aid){
                    $info[$aid][] = $val;
                    $count[]=count($info[$aid]);
                }                
            }
        }
        //var_dump($count);die;    
        $con = max($count);
        $arr = array();
        for ($i=0; $i <$con ; $i++) {
            foreach ($info as $key => $val) {
                if(isset($val[$i])){
                    $arr[$i][$key] = $val[$i]['q_name'];
                } else {
                    $arr[$i][$key] = '';
                }
            }
        }
        //var_dump($arr);die;
       return $this->render('list',['arr'=>$arr,'region'=>$areas]);
    }

视图层:

<table border="1">
         <!--一行区域-->
         <tr style="background:red;">
         <?php foreach ($region as $key => $v1) {?>
         <td><?php echo $v1['region_name']; ?></td>
         <?php }?>
         </tr>

<!--每列球队-->
         <?php foreach ($arr as $key => $val) {?>
         <tr>    
         <?php foreach ($val as $key => $v) {?>
         <td><?php echo $v; ?></td>
         <?php } ?>
         </tr>    
         <?php } ?>
         </table>

yii遍历行下的每列数据(小1月考)的更多相关文章

  1. DataTable相关操作,筛选,取前N条数据,去重复行,获取指定列数据

    #region DataTable筛选,排序返回符合条件行组成的新DataTable或直接用DefaultView按条件返回      /// <summary>      /// Dat ...

  2. kendo ui grid控件在选择行时如何取得所选行的某一列数据

    $("#grid").kendoGrid({ dataSource: dataSrc, columns: [ { template: '#=material_id#', width ...

  3. Excel 一张表最多能装下多少行多少列数据?

    一个工作簿可以装下255张,那么每张工作表可以装下多少行多少列数据呢? 1.任意打开或新建一个Excel文档. 2.在文档中,找到其左上角的"文件"按钮,点击选择"选项& ...

  4. C/C++遍历二维数组,列优先(column-major)比行优先(row-major)慢,why?

    C/C++遍历二维数组,列优先(column-major)比行优先(row-major)慢,why? 简单粗暴的答案:存在Cache机制! 稍微啰嗦一点:CPU访问内存(读/写,遍历数组的话主要是读) ...

  5. 【面试总结-编程】多行两列数据,实现同key的value求和并输出

    一个文件,两列,多行. 第一列是字母,第二列是数字,同列数据之间通过空格分割. 统计首列字母相同的第二列之和. 样例输入: A 5 B 6 OO 7 A 6 A 2 OO 2 输出: A:13 B:6 ...

  6. Python学习随笔:使用xlwings设置和操作excel多行多列数据以及设置数据字体颜色填充色对齐方式的方法

    ☞ ░ 前往老猿Python博文目录 ░ 在前面老猿的文章中,<Python学习随笔:使用xlwings读取和操作Excel文件>.<Python学习随笔:使用xlwings读取和操 ...

  7. FPGA计算3行同列数据之和

    实验:FPGA计算3行同列数据之和 实验要求:PC机通过串口发送3行数据(一行有56个数据,3行共有56*3=168个数据)给FPGA,FPGA计算3行同一列数据的和,并将结果通过串口返回给上位机. ...

  8. SQL两列数据,行转列

    SQL中只有两列数据(字段1,字段2),将其相同字段1的行转列 转换前: 转换后: --测试数据 if not object_id(N'Tempdb..#T') is null drop table ...

  9. 视图合并、hash join连接列数据分布不均匀引发的惨案

    表大小 SQL> select count(*) from agent.TB_AGENT_INFO; COUNT(*) ---------- 1751 SQL> select count( ...

随机推荐

  1. Bluetooth LMP介绍

    目录 1. 介绍 2. 数据包格式(Packet Format) 3. Procedure Rules 4. 通用回应消息(General Response Messages) 5. 设备特性(Dev ...

  2. Qt StyleSheet皮肤(黑色,比较好看,而且很全)

    使用方式如下 //设置皮肤样式 static void SetStyle(const QString &styleName) { QFile file(QString(":/imag ...

  3. readonly=“readonly”与readonly=“true”

    <input id="u" readonly /> <input id="u" readonly="readonly" / ...

  4. Android笔记: Android版本号

    由于有2套版本号 总是对应不准 记下来做过标记 Android 4.3 ----18 Android 4.2---17 Android 4.1---16 Android 4.0.3---15Andro ...

  5. Selenium2学习-015-WebUI自动化实战实例-013-通过 URL 关闭多余的已开浏览器窗口

    在日常的 WebUI 自动化测试脚本执行的过程中,经常会打开不同的网页,进行相应的操作,此时可能会打开很多的网页,当打开的网页过多时,无效的网页资源对运行脚本的机器造成了过多无效的资源浪费,因而在日常 ...

  6. urlencode和rawurlencode的区别

    摘自http://blog.csdn.net/doggie1024/article/details/5698615 urlencode:返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将 ...

  7. jq的选项卡tab

    jq中选项卡很简单,的注意是他结构命名(网上有很多,其中不乏不规范) 1.tab 2.tab-hd (选项栏) 3.tab-bd(选项栏对应的内容) css代码(布局没问题,可以只看jquery代码) ...

  8. Android标签云控件:TagCloudLinkView

    可以完成添加.删除.选择操作的标签控件,可以自定样式(颜色等),可删除的标签末尾带有'×'符号.和Android-Cloud-TagView-Plus(见正文相关代码)类似. 1.layout in ...

  9. APICloud云修复再升级 增加热重启APP功能

    移动应用开发平台APICloud的亮点功能云修复在本月迎来升级版,云修复是APICloud的优势功能之一,通过APICloud平台开发的APP或者嵌入SuperWebView SDK的原生APP在发布 ...

  10. 用NPOI操作EXCEL关于HSSFClientAnchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2)的参数

    2.4.1 用NPOI操作EXCEL关于HSSFClientAnchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2)的参数   NPOI教程:http://www.cnb ...