PHP数组不定长多键值排序

Run Settings
LanguagePHP
Language Version
Run Command
<?php /** * PHP数组不定长多键值排序 * * @author Zjmainstay * @website http://www.zjmainstay.cn * @param array $list 数据源 * @param array $rules 排序规则 ['key1'=>'asc', 'key2' => 'desc', ...] * @return array */ function smartMultiSort($list, $rules) { $multisortParams = []; foreach($rules as $key => $sort) { $multisortParams[$key] = []; $multisortParams[$key . $sort] = constant(strtoupper("sort_{$sort}")); } foreach($list as $item) { foreach($rules as $key => $sort) { $multisortParams[$key][] = $item[$key]; } } $multisortParams[] = &$list; call_user_func_array('array_multisort', $multisortParams); return array_pop($multisortParams); } //示例 $list = array (); $list [] = array ( 'id' => 1, 'name' => '学生1', 'school' => '学校1', 'class' => '班级1' ); $list [] = array ( 'id' => 4, 'name' => '学生4', 'school' => '学校2', 'class' => '班级2' ); $list [] = array ( 'id' => 3, 'name' => '学生3', 'school' => '学校2', 'class' => '班级1' ); $list [] = array ( 'id' => 2, 'name' => '学生2', 'school' => '学校1', 'class' => '班级2' ); $list [] = array ( 'id' => 5, 'name' => '学生5', 'school' => '学校2', 'class' => '班级3' ); print_r(smartMultiSort($list, ['school' => 'desc','id' => 'asc']));
Editor Settings
Theme
Key bindings
Full width
Lines