在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的主要内容,如果未能解决你的问题,请参考以下文章