basic - PHP / mySQL中foreach循环中每个项目的多个类别

时间:2017-10-12 17:42:47

标签: php mysql foreach

我有类别表。表3中的一个项目可能有多个类别。三个表格如下:

表1:

ID  Item_id
1   1
2   2
3   3
4   4
5   5

表2:

   ID Item_id Category
   1   1  catId_1
   2   2  catId_1
   3   2  catId_2
   4   3  catId_2
   5   3  catId_3
   6   3  catId_4
   7   4  catId_2
   8   5  catId_1
   etc.

第三个表只有类别名称的信息:

表3:

Category_id  category_name
catId_1     cats
catId_2     dogs
catId_3     IT_managers
catId_4     Trump_lovers

我做了一个查询来获取所有项目的PDO对象,并且能够从php中获取每个项目的类别。

首先查询:

public function getCategories(){
$this->db->query('SELECT table1.*, table2.*, table3.*
       FROM table1
       INNER JOIN table2
       ON table1.item_id = table2.item_id
       INNER JOIN table3
       ON table2.category=table3.category_id');

$results = $this->db->resultset();
return $results;}

$items = $offer_class -> getCategories();

如何获取foreach循环中每个项目的所有类别名称?

我已尝试过这个foreach循环,但它只为每个项目提供了第一个类别:

<?php foreach($items as $item){
echo $item->category_name; 
}
?>

1 个答案:

答案 0 :(得分:0)

您可以在2个查询中将其拆分。 - 一个查询,用于查找Table1,Table2中所需的查询以及查找与项目匹配的category_name的其他查询。

在你的foreach循环中,你将创建一个新的foreach循环,列出category_name数据。

关于你的评论,你可以这样做:

<?php

$items = array("test", "test2",array("CAT1","CAT2","CAT3","CAT4"));



foreach($items as $t)
{
    if(!is_array($t))
    {
        echo $t;
    } 
    else
    {

        foreach($t as $ar)
        {
            echo $ar . " ";
        }
    }
}