如何在单行的html表中显示具有相同id的多个记录(在<td>中)?

Ree*_*ale 2 html php codeigniter

我有sql数据结果集,其记录如下

 id |   name    |   hobbies
------------------------------------
1   |   RAVI    |   PLAYING CRICKET
------------------------------------
1   |   RAVI    |   LISTENING MUSIC
------------------------------------
2   |   REENA   |   BADMINTON
------------------------------------
Run Code Online (Sandbox Code Playgroud)

我使用html表在视图中显示这些数据.虽然我的要求是,我想显示如下

id  |   name    |   hobbies
------------------------------------
1   |   RAVI    |   PLAYING CRICKET
    |           |   LISTENING MUSIC
------------------------------------
2   |   REENA   |   BADMINTON
------------------------------------
Run Code Online (Sandbox Code Playgroud)

我希望将id为1的记录显示为一个<td> 我使用php foreach循环来显示结果.我怎样才能做到这一点?

我当前的代码如下,结果与我的第一个表相同,而我希望我的视图在第二个表中.

<table class="table table-striped">
    <tr >
        <th>ID</th>
        <th>Name</th>
        <th>Hobbies</th>
    </tr>
foreach($result as $row)
{
    echo "<tr>
         <td>".$row->id."</td>
         <td>". $row->name."</td>
         <td>". $row->hobbies."</td> 
         </tr>";
}
</table>
Run Code Online (Sandbox Code Playgroud)

new*_*rey 6

解决这个问题的一种快速方法是修改MySQL查询,以便GROUP_CONCAT(hobbies)将所有用户的爱好组合在一起.查询看起来像这样:

SELECT
    id, name, GROUP_CONCAT(hobbies) AS hobbies
FROM
    your_table
GROUP BY
    id
Run Code Online (Sandbox Code Playgroud)

这将把所有用户的爱好分组到逗号分隔的列表中.要显示它,您可以使用PHP explode()并迭代:

foreach ($results as $row) {
    echo '<tr>';
        echo '<td>' . $row->id . '</td>';
        echo '<td>' . $row->name . '</td>';

        echo '<td>';

        $hobbies = explode(',', $row->hobbies);
        foreach ($hobbies as $hobby) {
            // output each hobby and decorate/separate them however you'd like
            echo $hobby . '<br />';
        }

        echo '</td>';

    echo '</tr>';
}
Run Code Online (Sandbox Code Playgroud)

如果你不想要内循环(或<br />填充爱好的结尾),你可以使用str_replace():

echo str_replace(',', '<br />', $result['hobbies']);
Run Code Online (Sandbox Code Playgroud)