Grouping records from while loop | PHP

♀尐吖头ヾ 提交于 2019-12-04 04:43:44

问题


I'm trying to group down records by their priority levels, e.g.

--- Priority: High ---

Records...

--- Priority: Medium ---

Records...

--- Priority: Low ---

Records...

Something like that, how do I do that in PHP? The while loop orders records by the priority column which has int value (high = 3, medium = 2, low = 1). e.g. WHERE priority = '1'

The label: "Priority: [priority level]" has to be set above the grouped records regarding their level

EDIT:

<?php

while($row = mysql_fetch_array($result))
{
    echo '<h1>Priority Level: ' . $row['priority'] . '</h1>';
    echo $row['name'];
}

?>

Like that piece of code - the

tags is the label which seperates records regarding their priority level.

回答1:


If you're sure the results are ordered by priority then something as trivial as this:

$priority = null;
while($row = mysql_fetch_array($result))
{
    if( $row['priority'] != $priority )
    {
        echo '<h1>Priority Level: ' . $row['priority'] . '</h1>';
        $priority = $row['priority'];
    }
    echo $row['name'];
}

In other words, you keep track of the current priority level in the $priority variable. Then test whether the priority has changed in the if condition. If so, echo the priority and set the current priority to the priority found in the current row.

Mind you, this only works as expected (truly grouped once) if the rows are ordered by priority. In other words, when different priorities are not scattered across the resultset.




回答2:


If you use mysql why would not you use DB ordering capabilities?

SELECT *
FROM items
ORDER BY priority DESC


来源:https://stackoverflow.com/questions/2575994/grouping-records-from-while-loop-php

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!