Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将结果分组到标题下_Php_Loops_Join - Fatal编程技术网

Php 将结果分组到标题下

Php 将结果分组到标题下,php,loops,join,Php,Loops,Join,这可能是非常明显和简单的——但对我来说,这不是我的基本知识:) 我有两张桌子: table_items ----------- item_id ¦ item_name ¦ item_describtion ¦ more item stuff..... table_subitems ----------------- subitem_id ¦ item_id ¦ subitem_name ¦ More subitem stuff 每个项目可以有零到几乎无限的子项目,并且由项目id字段关联 我想

这可能是非常明显和简单的——但对我来说,这不是我的基本知识:)

我有两张桌子:

table_items
-----------
item_id ¦ item_name ¦ item_describtion ¦ more item stuff.....

table_subitems
-----------------
subitem_id ¦ item_id ¦ subitem_name ¦ More subitem stuff
每个项目可以有零到几乎无限的子项目,并且由项目id字段关联

我想打印出按项分组的子项

我目前正在使用一个查询来执行此操作,该查询选择子项,其中
table\u items.item\u id=table\u subitems.item\u id
,然后使用while循环显示它们,就目前而言,这很好,我得到如下结果:

Item One
========
Subitem 0ne

Item One
========
Subitem two

Item One
========
Subitem three

Item Two
========
Subitem one

Item Three
==========
Subitem one

Item Three
==========

 Subitem two
但是我想要

ITEM ONE
--------
Subitem one
Subitem two
Subitem three

ITEM TWO
--------
Subitem one

ITEM THREE
----------
Subitem one
Subitem two
我该怎么做?它是查询的函数还是显示结果的函数


我对PHP的了解在不断增长,但仍然有限,我正在以一种程序化的方式(即,这不是OOP,我正在尝试掌握但尚未完全掌握),所以请像我愚蠢一样跟我说话。

你可以这样做,每次更改时打印一个新的项目名称:

$last_item_id = null;

foreach ($rows as $row) {
    if ($row->item_id != $last_item_id) {
        echo "<h2>{$row->item_name}</h2>\n";
        $last_item_id = $row->item_id;
    }

    echo "{$row->subitem_name}<br />\n";
}
$last\u item\u id=null;
foreach($行作为$行){
如果($row->item\u id!=$last\u item\u id){
回显“{$row->item_name}\n”;
$last\u item\u id=$row->item\u id;
}
回显“{$row->subitem_name}
\n”; }
使用保存最后一个标题的变量,仅当当前标题与最后一个标题不同时才打印当前标题:

$last = null;
while ( /* … */ ) {
    if ($row['item_id'] != $last) {
        echo '<hx>'.$row['item_name'].'</hx>';
        $last = $row['item_id'];
    }
    echo $row['subitem_name'];
}
$last=null;
而(/*…*/){
如果($row['item_id'!=$last){
回显'.$row['item_name'].';
$last=$row['item_id'];
}
echo$行['子项名称'];
}