php - 如何循环遍历两个不同的表?

标签 php mysql arrays codeigniter

我已经思考这个问题好几个小时了,但找不到解决方案。我用谷歌搜索并在 stackoverflow 上搜索了一个重复的问题,但找不到。 (因为我不是以英语为母语,这可能就是原因,如果这是重复的,请将其标记为重复,并请指出问题)。

我有两张 table 。一是“节表”,二是“新闻表”。节表有“节名称”和“节 ID”。

新闻表有“栏目名称”、“内容描述”、“内容标题”、“内容 ID”。我希望我的页面看起来像这样:

第 1 节

  • 标题 1,说明 1

  • 标题 2,说明 2

第 2 节

  • 标题 1,说明 1

  • 标题 2,说明 2

  • 标题 3,说明 3

每个部分应该从数据库中获取最近 5 条新闻。我知道这应该通过循环来完成,我一直在使用 foreach 但似乎无法使其工作。

foreach($sections as $section)
{
    echo $section->title;

    foreach($news as $new)
    {
        echo $new->title; 
        echo $new->description;
    }
}

但这只是循环播放所有新闻。我明白了:

第 1 部分:

  • 标题 1、说明 1、标题 2、说明 2(以及其他部分的标题和说明)。

我想到的另一个解决方案是加入表格,但我得到的是:

第 1 节

  • 标题 1,说明 1

第 1 节

  • 标题 2,说明 2

等等。不是我要找的。

请帮忙,我一整天都被困在这个问题上:(

[编辑] 这是我的 Controller 的简化版本:

$sections = $this->mymodel->getSections();
$id = $sections->id;
$news = $this->mymodel->getNews($id);

这是模型:

function getNews($id){
$rows = $this->db->select('title, description, sectionid, id')
             ->where('sectionid', $id)
             ->limit(5)
             ->order_by('id', 'desc')
             ->get('news')->result();
return $rows;
}

function getSections(){
$rows = $this->db->select('title, description, id')->get('section')->result();
return $rows;
}

最佳答案

本质上,您需要检查并确保当前新闻元素 ($new) 与您正在显示的当前节元素 ($section) 具有相同的部分。在不知道您的确切 key 的情况下,我无法给出更准确的答案,但请尝试以下操作:

foreach($sections as $section)
{
    echo $section->title;

    foreach($news as $new)
    {
        if ($section->name == $new->section_name)
        {
            echo $new->title; 
            echo $new->description;
            echo "<br/>";
        }
    }
}

关于php - 如何循环遍历两个不同的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17032568/

相关文章:

php - 警告 : exec(): Unable to fork in PHP

mysql - AWS Cognito Identity ID 对 SQL 主键的适用性

MySQL 使用多个 NOT IN 条件将行从一个表复制到另一个表

arrays - 检索快照时,如何使用数组中的最后一个值作为 .child() 的路径?

php - Laravel 为路由提供数组,并非所有值都是必需的

php - 如何获取 Plupload 文件名?

php - mysql_fetch_array 和 mysql_num_rows 中的全局问题

从 MS SQL-Server 迁移数据库时 MYSQL Workbench "Incorrect string value"错误

java - 在 Java 中将 JList 选择存储在数组 String[] 中

javascript - 将具有键的数组与对象 JavaScript 中的键进行比较