![]() |
1
205
你可以使用 array_multisort() 尝试如下操作:
对于php>=5.5.0,只需提取要排序的列。无需循环:
|
![]() |
2
337
介绍:针对php 5.3的一个非常通用的解决方案+我想在这里添加我自己的解决方案,因为它提供了其他答案不能提供的功能。 具体来说,此解决方案的优势包括:
代码
如何使用在本节中,我将提供对示例数据集进行排序的链接:
基础知识
函数
最简单的用例是传入要用于比较数据项的键。例如,排序
如果项是数字索引数组,则键也可以是数字。对于问题中的示例,这将是
多个排序列
可以通过将其他参数传递到指定多个排序列
高级功能如果将排序列指定为数组而不是简单字符串,则可以使用更高级的功能。此数组应以数字索引,并且必须包含以下项:
让我们看看如何使用这些功能。 反向排序按名称降序排序:
要按数字降序排序,然后按名称降序排序:
自定义投影在某些情况下,可能需要按值不适合排序的列进行排序。示例数据集中的“生日”列符合此描述:将生日作为字符串进行比较是没有意义的(例如,“01/01/1980”在“10/10/1970”之前)。在这种情况下,我们要指定如何 项目 将实际数据转换为 可以 直接与所需的语义进行比较。 投影可以指定为任何类型的 callable :作为字符串、数组或匿名函数。假设一个投影接受一个参数并返回其投影形式。
应该注意的是,虽然投影类似于
让我们对没有投影的示例数据集进行排序,看看会发生什么:
这不是预期的结果。但是我们可以使用
这是我们想要的正确顺序。
还有很多事情是预测可以实现的。例如,快速获得不区分大小写排序的方法是使用
也就是说,如果您的数据集很大,那么最好不要使用投影:在这种情况下,提前手动投影所有数据,然后在不使用投影的情况下进行排序要快得多,尽管这样做会牺牲内存使用量的增加来获得更快的排序速度。 最后,下面是一个使用所有特性的示例:它首先按数字降序排序,然后按生日升序排序:
|
![]() |
3
31
用 usort . 下面是一个通用的解决方案,可以用于不同的列:
按第一列排序:
|
![]() |
4
10
使用闭包进行多行排序下面是另一种使用uasort()和匿名回调函数(closure)的方法。我经常使用这个功能。 需要php 5.3 _“不再依赖!
|
![]() |
5
6
我知道这个问题已经问了2年了,但这里还有一个对二维数组排序的函数。它接受可变数量的参数,允许您传入多个要排序的键(即列名)。需要php 5.3。
试试看: http://www.exorithm.com/algorithm/view/sort_multi_array |
![]() |
6
6
http://qaify.com/sort-an-array-of-associative-arrays-by-value-of-given-key-in-php/ |
![]() |
7
3
“usort”函数是您的答案。
|
![]() |
8
2
下面是将对一个或多个字段进行排序的php4/php5类:
|
![]() |
9
0
在我可以运行TableSorter类之前,我提出了一个基于 Shinhan 提供。
|
![]() |
10
0
我尝试了几个流行的数组multisort()和usort()答案,但没有一个对我有用。数据变得混乱,代码无法读取。这是一个快速而肮脏的解决方案。警告:只有当你确信一个流氓定界符以后不会回来骚扰你时,才使用这个! 假设多数组中的每一行看起来像:name、stuff1、stuff2:
需要按字母顺序把东西放回去吗?
是的,很脏。但超级简单,不会让你的头爆炸。 |
![]() |
Paul Williams · 迭代数组时输出有问题 7 月前 |
![]() |
Omprakash · 使用Google工作表中的多行和多列进行筛选 1 年前 |
![]() |
Genki · Bash:如何从多维数组中的命名键获取值 1 年前 |