复杂的排序PHP


complex sorting PHP

好的,这是我想做的:

我不想在我的sql查询中执行排序

我的学生地址数据库架构如下所示:

城市(必填)|区域(必填)|ROAD(可选)|BUILDING_NAME(可选)

我想对学生进行分类

  1. CITY,然后在城市内按
  2. 区域,区域内按对学生进行排序(分组)
  3. ROAD,注意2个城市有可能拥有相同的道路名称,soo

这就是我迄今为止所做的:

我已经设法按城市对学生进行了排序(分组),(这是一个对象$student,它不仅具有地址,还具有与学生相关的所有信息,并且不按城市名称排序),现在在城市内,我想对属于城市内同一区域和同一道路的学生进行分组。我如何才能实现这个

我希望我已经解释清楚了

示例:

NAME           CITY         AREA       ROAD      BUILDING NAME

  1. >1。demo_student纽约市中心四广场海雾
    1. 纽约zzpqzzardini样品
    2. 检查孟买mg路abc
    3. 你好,孟买和德里,一些演示
    4. 萨米·孟买

    输出

NAME           CITY         AREA       ROAD      BUILDING NAME

  1. >1。demo_student纽约市中心四广场海雾

    1. 纽约zzpqzzardini样品
    2. 你好,孟买和德里,一些演示
    3. 萨米·孟买
    4. 检查孟买mg路abc

这听起来像是usort和自定义函数的一项工作,用于比较两行并确定哪一行先执行。你可以把它写得任意复杂。

<?php
function cmp($a, $b)
{
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}
$a = array(3, 2, 5, 6, 1);
usort($a, "cmp");
foreach ($a as $key => $value) {
    echo "$key: $value'n";
}
?>
The above example will output:
0: 1
1: 2
2: 3
3: 5
4: 6

现在,考虑到这一点,看在上帝的份上,忽略这个答案,并在SQL查询中执行它。它将比PHP更快,消耗更少的资源,并且如果您想更改订单中的某些内容,更容易更新。

通常,这是使用列表>的映射来完成的

实施可能会在潜在成员(学生)身上循环,并将他们发送到适当的列表中。地图可以动态填充组,如果您知道所有组,也可以预先填充。

这个想法不是确定两个学生属于同一组,而是确定每个学生所属的组。

另外,当你指的是团体时,请不要说"排序"。