在codeigniter视图中嵌套foreach

Posted

技术标签:

【中文标题】在codeigniter视图中嵌套foreach【英文标题】:nested foreach in codeigniter view 【发布时间】:2015-08-12 10:12:19 【问题描述】:

我有 4 个表:process、country、process_country 和 category。每个进程都属于某个类别。一个国家可能有多个可用的流程,而一个流程可能在多个国家/地区可用。下面是我的数据库结构:

category table       process table        country table      process_country
--------------       --------------       -------------      ---------------
categoryid           processid            countryid          countryid
categoryname         processname          countryname        processid
                     categoryid
                     countryid

我创建了函数来获取每个国家/地区的所有可用流程,但是 我想在相应的类别下显示流程,但我不知道如何实现。我能够分别列出所有进程和类别,但我不知道如何嵌套它们。我想为每个国家/地区创建一个包含这样列表的页面:

>  1. Category 1
>        Process 1
>        Process 2
>  2. Category 2
>        Process 3

我正在考虑一个嵌套的 foreach 循环:

<?php
        foreach ($category as $c) 
            echo "<li>" . $c->CategoryName . "</li>";
            foreach ($process as $r) 
                echo "<li><a href=\"" . base_url() . "index.php/process/id/" . $r->ProcessID . "\" target=\"_blank\">" . $r->ProcessName . "</a></li>";
            
        
    ?>

但我不知道如何为该类别下的所有进程实现另一个 foreach 循环。

控制器:

$data['process'] = $this->getProcesses(); //function that gets process available for the country
$data['category'] = $this->getCategories(); //function that gets all categories
$this->load->view('includes/template', $data); 

【问题讨论】:

您应该能够从 SINGLE 查询所需的那些表中获取所有数据。 【参考方案1】:

$data['process'] 里面你需要有category ID$data['category'] 里面还有

那么只有你可以匹配两者,例如foreach循环将如下所示

<?php
        foreach ($category as $c) 
            echo "<li>" . $c->CategoryName . "</li>";
            foreach ($process as $r) 
                if($r['cat_id']==$c['id'])
echo "<li><a href=\"" . base_url() . "index.php/process/id/" . $r->ProcessID . "\" target=\"_blank\">" . $r->ProcessName . "</a></li>";
       

            
        
    ?>

如果两个Id 匹配,那么您将打印它们!

编码愉快!

【讨论】:

太好了,很高兴为您提供帮助,支持此答案,这可能有助于其他人获得准确的答案。亲爱的编码快乐!

以上是关于在codeigniter视图中嵌套foreach的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP / CodeIgniter 中,不止一个事务开始了,而另一个事务没有完成;比如嵌套事务

如何在codeigniter中包含嵌套表单

如何使用 CodeIgniter 将视图打开到视图中

在 CodeIgniter 3 中多次渲染视图

Codeigniter:php 在视图中不起作用!

PHP:在视图中显示会话变量:CodeIgniter