有如下数据,按男女,年龄排序,同龄按身高排序,有一个用户表id自增useridgendergender1male2femaleageageheight+-----+-------------------------------------------+|身份证|性别|年龄|高度+-----+------------------------------------------+|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*fromuserorderbygenderASC,ageASC;那么如何使用php数组来实现类似orderby的功能呢?假设检索到的结果集是$users数组,我们使用array_multisort做一个多维数组Sort$users=[['id'=>138,'gender'=>1,'age'=>6,'height'=>80],['id'=>139,'性别'=>2,'年龄'=>2,'身高'=>42],['id'=>140,'性别'=>1,'年龄'=>3,'身高'=>;52],['id'=>150,'性别'=>2,'年龄'=>3,'身高'=>51],['id'=>160,'性别'=>1,'age'=>2,'height'=>41],['id'=>171,'gender'=>2,'age'=>4,'height'=>70],];$性别=$年龄=$身高=[];foreach($usersas$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|性别|年龄|高度-------+--------+-----+--------160|1|2|41140|1|2|52138|1|6|80139|2|2|42171|2|3|50150|2|3|51感谢收看,欢迎关注我的公众号。
