如何从查询创建多维数组?

时间:2015-03-16 00:43:11

标签: php codeigniter multidimensional-array

我有两张桌子:

category(id_cat,cat_name)  
sub_cat(id_cat,id_sub_cat,sub_cat_name)

我想通过连接这些表来创建视图。我创建了一个控制器,其代码如下:

$d['category'] = $this->db->query('select * from category a left join sub_cat b on a.id_cat=b.id_cat');
$this->load->view('cat',$d);

和我的观点:

<table><tr><th>Cat Name</th><th>Sub Cat Name</th></tr> 
<?php foreach($category->result_array() as $dt) { ?>
<tr><td><?php echo $dt['cat_name'] ?></td><td><?php echo $dt['sub_cat_name']?></td></tr>
<?php } ?>
</table>

我的观点结果如下:

------------------------
cat_name | sub_cat_name 
------------------------
cat1     | sub 1
cat1     | sub 2
cat1     | sub 3
------------------------
cat2     | sub 1
cat2     | sub 2
------------------------

但我希望视图是这样的:

------------------------
cat_name | sub_cat_name 
------------------------
cat1     | sub 1
         | sub 2
         | sub 3
------------------------
cat 2    | sub 1
         | sub 2
------------------------

1 个答案:

答案 0 :(得分:0)

您可以使用temp变量存储cat_name,并检查cat_name是否已被使用,否则您的视图中不会回显:

<?php
    $temp = '';
    foreach($category->result_array() as $dt) {
        if ($dt['cat_name'] != $temp) {
            echo $dt['cat_name'];
            $temp = $dt['cat_name'];
        }
    }
?>

你也可以把它放到功能中,这样你的视图就会变得混乱。希望这可以帮助。注意:建议查询的格式化必须在方法(帮助程序)文件上完成,这样您就不会有胖控制器。

修改

您可以在此处查看小提琴:http://codepad.org/WwUm4zeZ