PHP中二维数组排序的详细解决方案
以二维数组在PHP中排序,你可以使用PHP内置函数uasort()例1:
使用用户定义的比较函数对数组中的值进行排序并维护索引关联。
回调函数如下:注意,当回调函数的返回值为负数或false时,它表示回调函数的第一个参数是以前的,第二个参数是在稍后安排的。
$ =数组(
阵列('num= > '001,'id' = > 6,'name' = > 'zhangsan时代= > 21),
阵列('num= > '001,'id' = > 7,'name' = > 'ahangsan时代= > 23),
阵列('num= > '003,'id' = > 1,'name' = > 'bhangsan时代= > 23),
阵列('num= > '001,'id' = > 3,'name' = > 'dhangsan时代= > 23),
);
第一个参数的正负号应该在前面。
功能sort_by_name(X,Y元){
返回strcasecmp(X元{ 'name' },Y元{ 'name' });
}
使用如下:
Uasort($人,'sort_by_name);
下面给出了二维数组的排序方法,供参考和面试时参考:
要用数组进行排序的数组。
行按列排序
/ / $型ASC或DESC排序类型{ }
按顺序排列的一个数组
功能array_sort($array美元美元,连续型){
array_temp美元=阵();
foreach(数组$ V){
array_temp美元{ $ V { } } = $ V $行;
}
如果(合型= = 'asc){
Ksort(array_temp美元);
} elseif(合型= 'desc){
Krsort(array_temp美元);
其他{ }
}
返回的array_temp;
}
例二:
一维数组的排序可以按分类,ksort等方法,比较简单。如何做二维数组的排序呢使用array_multisort和模型可以实现
例如,下面的数组:
代码如下:
$用户=数组(
阵列('name' =,年龄= 20)
阵列('name' = 'anny时代= 18)
阵列('name' =杰克时代= 22)
);
希望能按年龄从小到大排序。作者收集了两种方法并与大家分享。
1。使用array_multisort
使用这种方法,将年龄提取到一维数组并按年龄顺序排列会更麻烦:
代码如下:
数组();
foreach(合用户的用户名){
{ } =美元美元时代用户{年龄};
}
array_multisort(美元的时代,sort_asc,$用户);
执行后,$用户是一种数组,可以打印出来查看。如果需要按年龄顺序升序排列,然后按照名称按升序排列,同样的方法是提取多个名称数组。
代码如下:
array_multisort(美元时代,美元sort_asc,名字,sort_asc,$用户);
2。使用模型
使用这种方法的最大优点是定制一些更复杂的排序方法:
代码如下:
Usort($用户功能($,$){
合铝= strlen(美元{ 'name' });
$ BL = strlen($ { 'name' });
如果($ = BL)
返回0;
收益(1美元)- 1;
});
这里使用匿名函数,如果需要,可以单独提取,其中$、b可以理解为$用户数组下的一个元素,它可以直接索引name值,并计算长度,然后比较长度。
=====================================================================
顺便提一下,PHP排序的一些功能
数组排序的排序通常适用于一维索引数组,而不是索引。
rsort与阵列反向排序和排序的一致性
一种阵列和保持指数关系的排序值。一般采用一维数组来保持索引关系。
arsort逆阵和保留指数关系的一种用法一致
ksort由键的数组排序
按照相反的顺序按键阵列的Krsort