有以下数据,按照男女,age排序,同样的年纪按height身高排序
有user表
id 自增userid
gender 性别 1男 2女
age 年龄
height 身高
+-----+--------------------------------------------+
| id |gender|age| height
+-----+--------------------------------------------+
| 138 | 1 | 6 | 80
+-----+--------------------------------------------+
| 139 | 2 | 2 | 42
+-----+--------------------------------------------+
| 140 | 1 | 3 | 52
+-----+--------------------------------------------+
| 150 | 2 | 3 | 51
+-----+--------------------------------------------+
| 160 | 1 | 2 | 41
+-----+--------------------------------------------+
| 171 | 2 | 4 | 70
+-----+--------------------------------------------+
如果用sql的话,
select * from user order by gender ASC,age ASC;
那么如何用php数组实现一个类似的order by功能呢
假设取出的结果集为$users 数组,我们用array_multisort 做多维数组排序
$users = [
['id'=>138,'gender'=>1,'age'=>6,'height'=>80],
['id'=>139,'gender'=>2,'age'=>2,'height'=>42],
['id'=>140,'gender'=>1,'age'=>3,'height'=>52],
['id'=>150,'gender'=>2,'age'=>3,'height'=>51],
['id'=>160,'gender'=>1,'age'=>2,'height'=>41],
['id'=>171,'gender'=>2,'age'=>4,'height'=>70],
];
$genders = $ages = $heights =[];
foreach ($users as $index => $user){
$genders[$index] = $user['gender'];
$ages[$index] = $user['age'];
$heights[$index] = $user['height'];
}
array_multisort($genders,SORT_ASC,$ages,SORT_ASC,$heights,SORT_ASC,$users);
排序后新的$users为
id | gender | age | height
-------+--------+------+---- ----
160 | 1 | 2 | 41
140 | 1 | 2 | 52
138 | 1 | 6 | 80
139 | 2 | 2 | 42
171 | 2 | 3 | 50
150 | 2 | 3 | 51
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。