本文实例讲述了Yii遍历行下每列数据的方法。分享给大家供大家参考,具体如下:
效果图如下:
控制器(1种):
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种):
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','region'=>$areas]);
}
视图层:
PHP;">
更多关于Yii相关内容感兴趣的读者可查看本站专题:《@L_403_0@》、《》、《》、《》、《》及《PHP常见数据库操作技巧汇总》
希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。