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$行['子项名称'];
}