使用PHP怎么对多维数组指定字段进行排序

  介绍

本篇文章给大家分享的是有关使用PHP怎么对多维数组指定字段进行排序,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

对,对多个数组或多维数组进行排序。其php手册中的说明如下:

代码如下:

bool对(数组和$ arr [arg美元=SORT_ASC[混合,混合参数=美元SORT_REGULAR[,混合美元……]]])

<强>参数


的arr要排序的一个数组。

参数
接下来的每个参数可以是另一个数组或者是为之前阵列排序标志选项参数:SORT_ASC, SORT_DESC, SORT_REGULAR, SORT_NUMERIC SORT_STRING。

附加参数# 39;s。

<>强先实现指定多维数组一个字段排序

此处要求根据其中的一个字段来对数组进行排序,数组假设如下:

,, array 美元;=,阵列(   ,,,,,0=祝辞数组(& # 39;id # 39;=在8日& # 39;名字# 39;=祝辞& # 39;汤姆# 39;),   ,,,,,1=祝辞数组(& # 39;id # 39;=在9日& # 39;名字# 39;=祝辞& # 39;彼得# 39;),   ,,,,,2=祝辞数组(& # 39;id # 39;=祝辞5 & # 39;名字# 39;=祝辞& # 39;杰克# 39;)   ),才能

我们要根据二维数组的id值来排的序,转换后的数组格式如下:

,, array 美元;=,阵列(   ,,,,,0=祝辞数组(& # 39;id # 39;=祝辞5 & # 39;名字# 39;=祝辞& # 39;杰克# 39;)   ,,,,,1=祝辞数组(& # 39;id # 39;=在8日& # 39;名字# 39;=祝辞& # 39;汤姆# 39;),   ,,,,,2=祝辞数组(& # 39;id # 39;=在9日& # 39;名字# 39;=祝辞& # 39;彼得# 39;)   ),才能

要完成上述的转换,需要用到上面介绍的对函数,如下:

,, function  sortArrByOneField(和数组,美元,美元,,desc 美元;=,false) {   ,,,fieldArr 美元;=,数组();   ,,,foreach  (array 美元;as  k 美元;=祝辞,美元v), {   ,,,,fieldArr美元($ k),=, v美元(美元领域);   ,,,}   ,,,sort 美元;=,desc 美元;==,false  ?, SORT_ASC :, SORT_DESC;   ,,,对(fieldArr美元,,,,美元数组);   以前,,}

通过将待排序数组的各个数组的现场保美元存在一位数组fieldArr中,在传入对中参与排序。其领域中数组的值如下:

数组(1=0=在8日在9日2=祝辞5)

传入对后,相当于对美元领域一维数组的排序,而后根据排序后的关键重新构建传入的待排序数组。

<强>实现多维数组的指定多个字段排序

上面的实例讲解了如何实现多维数组指定一个字段排序,但如果要实现指定多个字段来对数组进行排序该如何思考?
多个字段是几个? 2个、3个或更多,所以这个不确定的因素需要排除。

我们先来看2指定2个字段进行排序的方案:

,, arr 美元;=,阵列(   ,,,& # 39;0 & # 39;,=祝辞,阵列(   ,,,,,& # 39;id # 39;,=祝辞,3,   ,,,,,& # 39;年龄# 39;,=祝辞,27岁,   ,,,),   ,,,& # 39;1 & # 39;,=祝辞,阵列(   ,,,,,& # 39;id # 39;,=祝辞,5,   ,,,,,& # 39;年龄# 39;,=在50   ,,,),   ,,,& # 39;2 & # 39;,=祝辞,阵列(   ,,,,,& # 39;id # 39;,=祝辞,4,   ,,,,,& # 39;年龄# 39;,=在44   ,,,),   ,,,& # 39;3 & # 39;,=祝辞,阵列(   ,,,,,& # 39;id # 39;,=祝辞,3,   ,,,,,& # 39;年龄# 39;,=在78年   ,,,),   ,,);   foreach 才能;(,arr 美元;as  key 美元;=祝辞,row 美元;){   ,,,$ id ($ key),=, row 美元;[& # 39;id # 39;];   ,,,年龄(例子)美元美元,=,row 美元;[& # 39;年龄# 39;];   ,,}   对才能($ id, SORT_ASC,,年龄,美元,SORT_DESC,, arr美元);   print_r (arr)美元才能;//结果:才能阵列([0]=祝辞数组((& # 39;id # 39;]=祝辞;3,(& # 39;年龄# 39;]=祝辞;78),[1]=祝辞数组((& # 39;id # 39;]=祝辞;3,(& # 39;年龄# 39;]=祝辞27),[2]=祝辞数组((& # 39;id # 39;]=祝辞;4,[& # 39;年龄# 39;]=祝辞44),[3]=祝辞数组((& # 39;id # 39;]=祝辞;5,(& # 39;年龄# 39;]=祝辞50))

重构上述代码,只要采用php中的func_get_args函数,来动态获取传入的值,既可以解决多字段个数不确定的问题。实现如下:

,, array1 美元;=,阵列(   ,,,,,,,0=祝辞数组(& # 39;id # 39;=在8日& # 39;名字# 39;=祝辞& # 39;苹果# 39;,& # 39;年龄# 39;=祝辞,18),   ,,,,,,,1=祝辞数组(& # 39;id # 39;=在8日& # 39;名字# 39;=祝辞& # 39;床# 39;,& # 39;年龄# 39;=祝辞17),   ,,,,,,,2=祝辞数组(& # 39;id # 39;=祝辞5 & # 39;名字# 39;=祝辞& # 39;因为# 39;,& # 39;年龄# 39;=祝辞16),   ,,,,,,,3=祝辞数组(& # 39;id # 39;=祝辞5 & # 39;名字# 39;=祝辞& # 39;因为# 39;,& # 39;年龄# 39;=祝辞14)   ,,);   function 才能;sortArrByManyField () {   ,,,args 美元;=,func_get_args ();   ,,,如果(空(args)美元){   ,,,,,return 零;   ,,,}   ,,,arr 美元;=,array_shift (args);   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

使用PHP怎么对多维数组指定字段进行排序