我有类别表。一项在表 3 中可能有多个类别。三个表如下:
表 1:
ID Item_id
1 1
2 2
3 3
4 4
5 5
表 2:
ID Item_id Category
1 1 cat1
2 2 cat1
3 2 cat2
4 3 cat2
5 3 cat3
6 3 cat4
7 4 cat2
8 5 cat1
etc.
第三张表只有类别名称的信息:
表 3:
Category_id category_name
cat1 apples
cat2 oranges
cat3 bananas
cat4 pineapples
我进行了查询以获取所有项目的 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 循环中获取每个项目的所有类别名称,如下所示:
echo :元素 1:苹果
echo :元素2:苹果、橘子
echo: Item3: 橘子、香蕉、菠萝
我试过这个 foreach 循环,但它只给我每个项目的第一个类别名称:
<?php foreach($items as $item){
echo $item->category_name;
}
?>
最佳答案
JOIN 依次返回单条记录,因此结果大致如下所示:
1, cat1, apples
2, cat1, apples
2, cat2, oranges
3, cat2, oranges
3, cat3, bananas
3, cat4, pineapples
您必须按 Item_id
对记录进行分组并一次打印所有类别名称(这将是伪伪代码,因为我不知道 php,我正在复制- 从其他几个答案中粘贴):
$dict = [];
foreach($items as $item) {
$id = $item->Item_id
$dict[$id][] = $item;
}
// here print all the values from the arrays
foreach($result as $arr) {
echo ??? // print the category_name for each element in $arr in the same line
}
关于php - 在 php foreach 循环中回显 SQL PDO 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46866240/