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中对foreach循环中的项进行分组_Php_Loops_Grouping - Fatal编程技术网

在PHP中对foreach循环中的项进行分组

在PHP中对foreach循环中的项进行分组,php,loops,grouping,Php,Loops,Grouping,所以,我想做一种用户市场类型的东西。有一个数据库有项目名称,基本上描述了虚拟项目,然后还有另一个表市场,当用户列出他们的一个项目时,它将在用户市场上出售 这里我唯一的问题是,我想按项目名称表中引用的项目名称对其进行分组。我知道我可以做很多if/else语句,但这是无关的,不仅因为有很多项,而且因为随着时间的推移,我会添加更多项。我希望最终的结果是 --[Water for sale]---------------------+ [50 water for sale] [20 water for

所以,我想做一种用户市场类型的东西。有一个数据库有
项目名称
,基本上描述了虚拟项目,然后还有另一个表
市场
,当用户列出他们的一个项目时,它将在用户市场上出售

这里我唯一的问题是,我想按
项目名称
表中引用的项目名称对其进行分组。我知道我可以做很多if/else语句,但这是无关的,不仅因为有很多项,而且因为随着时间的推移,我会添加更多项。我希望最终的结果是

--[Water for sale]---------------------+

[50 water for sale] [20 water for sale]

[10 water for sale] [10 water for sale]

--[Chips for sale]----------------------+

[50 chips for sale] [20 chips for sale]

[10 chips for sale] [10 chips for sale]
等等,动态完成

有什么帮助吗?

获取数据:

$data = array();
while ($row = mysql_fetch_assoc($result)) {
  $itemName = $row["item_name"];
  if (!array_key_exists($itemName, $data)) {
    $data[$itemName] = array();
  }
  $data[$itemName][] = $row;
}
显示数据

foreach ($data as $itemName => $rows) {
  echo '<h1>', $itemName, '</h1>';
  echo '<ul>';
  foreach ($rows as $row) {
    echo '<li>', $row["article_name"], '</li>';
  }
  echo '</ul>';
}
foreach($itemName=>$rows形式的数据){
回显“”,$itemName“”;
回声“
    ”; foreach($行作为$行){ 回音“
  • ”,$row[“article_name”],“
  • ”; } 回声“
”; }
确保您在SQL查询中对结果进行排序(而不是分组),那么循环将非常简单(假设PDO,以及表
项名称上的列
项名称
):

$sth=$dbh->query(“按项目名称顺序从项目名称中选择*);
$lastname='';
而($row=$sth->fetch()){
如果($lastname!=$row['item\u name'])){
回显'.$row['item_name'].';
}
//在此处回显每个项目的内容
//记住最后一行的名字
$lastname=$row['item_name'];
}

mmmm薯片和瓶装水。谢谢。这就是我的目标,只是无法想象!非常感谢。愿上帝保佑
$sth = $dbh->query ("SELECT * FROM item_names ORDER BY item_name");
$lastname = '';
while ($row = $sth->fetch()) {
    if($lastname != $row['item_name']) {
        echo '<h1>' . $row['item_name'] . '</h1>';
    }
    // echo contents for each item here

    // remember name from last row
    $lastname = $row['item_name'];
}