php二维数组排序方法(array_multisort usort)

2015-01-24信息快讯网

一维数组排序可以使用asort、ksort等一些方法进程排序,相对来说比较简单。二维数组的排序怎么实现呢?使用array_multisort和usort可以实现

例如像下面的数组:

$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

使用这个方法最大的好处就是可以自定义一些比较复杂的排序方法。例如按照名称的长度降序排列:

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值,并计算长度,而后比较长度就可以了。

笔者更喜欢第二种方法,因为少了提取排序内容到一维数组的步骤,而且排序方法更为灵活。

php数组排序usort、uksort与sort函数用法
PHP数组排序之sort、asort与ksort用法实例
PHP中使用asort进行中文排序失效的问题处理
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
PHP获取windows登录用户名的方法
PHP获取MySql新增记录ID值的3种方法
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
PHP错误Parse error: syntax error, unexpected end of file in test.php on line 12解决方法
浅析application/x-www-form-urlencoded和multipart/form-data的区别
destoon设置自定义搜索的方法
destoon安装出现Internal Server Error的解决方法
ThinkPHP之import方法实例详解
Yii Framework框架获取分类下面的所有子类方法
PHP错误Cannot use object of type stdClass as array in错误的解决办法
php检测useragent版本示例
PHP 函数call_user_func和call_user_func_array用法详解
php输入流php://input使用示例(php发送图片流到服务器)
php缩小png图片不损失透明色的解决方法
php查看请求头信息获取远程图片大小的方法分享
输入值/表单提交参数过滤有效防止sql注入的方法
zend framework文件上传功能实例代码
php文字水印和php图片水印实现代码(二种加水印方法)
php下载excel无法打开的解决方法
wordpress自定义url参数实现路由功能的代码示例
php导出word格式数据的代码实例
限制ckeditor上传图片文件大小的方法
php ckeditor上传图片文件名乱码解决方法
php堆排序(heapsort)练习
基于flush()不能按顺序输出时的解决办法
解析file_get_contents模仿浏览器头(user_agent)获取数据
PHP array_multisort() 函数的深入解析
使用array mutisort 实现按某字段对数据排序
深入array multisort排序原理的详解
©2014-2024 dbsqp.com