java⼆维数组降序排序_php⼆维数组排序⽅法
(array_multisortusort)
例如像下⾯的数组:
$users = array(
array('name' => 'tom', 'age' => 20)
, array('name' => 'anny', 'age' => 18)
, array('name' => 'jack', 'age' => 22)
);
希望能按照age从⼩到⼤进⾏排序。笔者整理了两个⽅法出来,分享给⼤家。
1、使⽤array_multisort
使⽤这个⽅法,会⽐较⿇烦些,要将age提取出来存储到⼀维数组⾥,然后按照age升序排列。具体代码如下:
$ages = array();
foreach ($users as $user) {
$ages[] = $user['age'];
}
array_multisort($ages, SORT_ASC, $users);
执⾏后,$users就是排序好的数组了,可以打印出来看看。如果需要先按年龄升序排列,再按照名称升序排列,⽅法同上,就是多提取⼀个名称数组出来,最后的排序⽅法这样调⽤:
array_multisort($ages, SORT_ASC, $names, SORT_ASC, $users);
2、使⽤usort国外java php
使⽤这个⽅法最⼤的好处就是可以⾃定义⼀些⽐较复杂的排序⽅法。例如按照名称的长度降序排列:
usort($users, function($a, $b) {
$al = strlen($a['name']);
$bl = strlen($b['name']);
if ($al == $bl)
return 0;
return ($al > $bl) ? -1 : 1;
});
这⾥使⽤了匿名函数,如果有需要也可以单独提取出来。其中$a, $b可以理解为$users数组下的元素,可以直接索引name值,并计算长度,⽽后⽐较长度就可以了。
笔者更喜欢第⼆种⽅法,因为少了提取排序内容到⼀维数组的步骤,⽽且排序⽅法更为灵活。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论