【问题标题】:Grouping records from while loop | PHP对来自while循环的记录进行分组| PHP
【发布时间】:2010-04-04 21:40:48
【问题描述】:

我正在尝试按优先级对记录进行分组,例如

--- 优先级:高---

记录...

--- 优先级:中 ---

记录...

--- 优先级:低---

记录...

类似的东西,我如何在 PHP 中做到这一点? while 循环按具有 int 值(高 = 3,中 = 2,低 = 1)的优先级列对记录进行排序。例如WHERE 优先级 = '1'

标签:“优先级:[优先级]”必须设置在关于其级别的分组记录上方

编辑:

<?php

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

?>

就像那段代码 -

标签是区分记录优先级的标签。

【问题讨论】:

    标签: php mysql grouping while-loop


    【解决方案1】:

    如果您确定结果是按优先级排序的,那么就可以这样:

    $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'];
    }
    

    换句话说,您可以在$priority 变量中跟踪当前的优先级。然后在if条件下测试优先级是否发生了变化。如果是这样,echo 优先级并将当前优先级设置为当前行中找到的优先级。

    请注意,如果行按优先级排序,这只会按预期工作(真正分组一次)。换句话说,当不同的优先级没有分散在结果集中时。

    【讨论】:

    • 啊.. 这有点不起作用,但它确实“分组”了记录,但它只是给每条记录一个标签而不是每个组的标签。
    • 您确定结果集是按优先级排序的吗?您可以编辑您的问题并在其中显示 SQL 查询吗?
    • 哎呀,我的错,做错了,但你的解决方案仍然有效 :) 完全没有问题
    【解决方案2】:

    如果您使用 mysql,为什么不使用 DB 排序功能?

    SELECT *
    FROM items
    ORDER BY priority DESC
    

    【讨论】:

    • 不是查询...我已经订购了它,我正在询问分隔记录的 PHP。 - 顺便编辑了帖子
    猜你喜欢
    • 2011-01-30
    • 2011-07-27
    • 2018-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多