php函数usort()二维或多维数组排序array_multisort()
来源:原创
时间:2015-09-26
作者:脚本小站
分类:PHP
usort()是一个很实用的排序数组,我经常使用,不管什么样的数组要排序总能搞定问题。array_multisort()函数虽然也可以对二维数组排序,但是不是那么灵活。
usort()使用方法:
$users = array(
array('name' => 'tom', 'age' => 20)
, array('name' => 'anny', 'age' => 18)
, array('name' => 'jack', 'age' => 22)
);
usort($users, function($a, $b) { //回调函数排序,在回调函数里面可以做任何事,很方便
$al = $a['age'];
$bl = $b['age'];
if ($al == $bl)
return 0;
return ($al > $bl) ? 1 : -1;
});array_multisort()
$ages = array();
foreach ($users as $user) {
$ages[] = $user['age'];
}
// $users 要排序的二维数组
// $ages 要排序的字段,必须提取出来,
array_multisort($ages, SORT_ASC, $users);
print_r($users);
本例中将把 volume 降序排列,把 edition 升序排列。
<?php
// 取得列的列表
foreach ($data as $key => $row) {
$volume[$key] = $row['volume'];
$edition[$key] = $row['edition'];
}
// 将数据根据 volume 降序排列,根据 edition 升序排列
// 把 $data 作为最后一个参数,以通用键排序
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
?>类似于sql语句中的 order by ages asc
其他参考资料
http://php.net/manual/zh/function.array-multisort.php
