首页 > 解决方案 > 如何基于同一列单元格输出一个组,同时将其循环到 html 中?

问题描述

我想在循环数据库表中的所有行时创建组。

示例数据库:

id | sex | name | age
1 | male | kevin | 20
2 | male | bob | 24
3 | female | jenny | 24
4 | female | bob | 20
5 | no | gaben | 13

我想按名称对条目进行分组。我正在寻找的输出是这样的:

应该输出:

<div id="bob">
 <a>bob male 24</a>
 <a>bob female 20</a>
</div>
<div id="kevin">
 <a>kevin male 20</a>
</div>
<div id="gaben">
 <a>gaben no 13</a>
</div>
<div id="jenny">
 <a>jenny female 24</a>
</div>

我在彼此内部制作了两个while循环。它只输出<div>一对一name。每个 div 都应该为每个唯一的name. 因此,当某人具有相同的 时name,应将它们放在同一个<div id="name">元素/组中;

我创建了一个names[]数组,所以我可以检查名称是否在名称数组中。如果没有,它应该创建一个<div id="name">元素。<div id="name">创建元素/组后,内部循环应该循环该 div 元素内部的所有内容$name = $row['name']。如果循环完成,则应关闭 div</div>并将名称添加到$names[] = $name数组中。所以它不会再创造同样的东西div。然后它应该继续使用下一个名称,但不知何故它没有这样做。

<?php
if($resultCheck > 0){

    $names = [];

    while($row = $result->fetch_assoc()) {

        $name = $row['name'];

        if(!in_array($fieldset, $fieldsets)){
            echo '<div name="'.$hersteller.'">';
        }

        while($names = $result->fetch_assoc()){
            echo '<a>'.$row['name'].' '.$row['sex'].' '.$row['age'].'</a>';
        }

    }

    if(!in_array($name, $names)){
        echo '</div>';
    }

    $names[] = $name;

}
?>

标签: phploopswhile-loop

解决方案


GROUP BY name除非您在查询中使用,否则您的解决方案将不起作用。因此,如果您不使用,GROUP BY那么解决方案将是这样的:

<?php
if($resultCheck > 0){
    $names = array();
    while($row = $result->fetch_assoc()) {
        $names[$row['name']][] = array($row['name'], $row['sex'], $row['age']);
    }

    foreach($names as $name => $details){
        echo '<div name="'.$name.'">';
        foreach($details as $d){
            echo '<a>'.$d['name'].' '.$d['sex'].' '.$d['age'].'</a>';
        }
        echo '</div>';
    }
}
?>

如果您GROUP BY name在查询中使用,那么您的结果集将按名称分组,您可以使用如下解决方案:

<?php
if($resultCheck > 0){
    $names = array();
    while($row = $result->fetch_assoc()) {
        if(!in_array($row['name'], $names)){
            if(empty($names)){
                echo '<div name="'.$name.'">';
            }else{
                echo '</div'>;
                echo '<div name="'.$name.'">';
            }
            echo '<a>'.$row['name'].' '.$row['sex'].' '.$row['age'].'</a>';
            $names = $row['name'];
        }else{
            echo '<a>'.$row['name'].' '.$row['sex'].' '.$row['age'].'</a>';
        }
    }
    echo '</div>';
}
?>

推荐阅读