<?php
/**
* 多维多列排序
* @return mixed
*/
function array_sort()
{
$args = func_get_args();
$data = array_shift($args);
foreach ($args as $n => $field) {
if (is_string($field)) {
$tmp = array();
foreach ($data as $key => $row)
$tmp[$key] = $row[$field];
$args[$n] = $tmp;
}
}
$args[] = &$data;
call_user_func_array('array_multisort', $args);
return array_pop($args);
}
// 示例多维数组
$rights = [
0 => Array
(
'id' => 61,
'title' => '权益一',
'level_id' => 20,
'created_at' => '2019-08-26 11:01:29',
'low_level' => 1,
'level_names' => Array
(
0 => '初始等级',
1 => '一星会员',
2 => '二星会员',
3 => '三星会员',
4 => '四星会员',
5 => '五星会员'
)
),
17 => Array
(
'id' => 78,
'title' => '权益十八',
'created_at' => '2019-08-26 11:41:40',
'low_level' => 2,
'level_names' => Array
(
0 => '初始等级',
1 => '一星会员',
3 => '三星会员',
4 => '四星会员',
)
),
18 => Array
(
'id' => 79,
'title' => '权益十九',
'created_at' => '2019-08-26 11:41:49',
'low_level' => 1,
'level_names' => Array
(
0 => '初始等级',
1 => '一星会员',
2 => '二星会员',
3 => '三星会员',
4 => '四星会员',
)
),
19 => Array
(
'id' => 80,
'title' => '权益二十',
'created_at' => '2019-08-26 11:41:58',
'low_level' => 3,
'level_names' => Array
(
0 => '初始等级',
1 => '一星会员',
2 => '二星会员',
3 => '三星会员',
4 => '四星会员',
5 => '五星会员'
)
),
20 => Array
(
'id' => 81,
'title' => '权益二十一',
'created_at' => '2019-08-26 11:41:51',
'low_level' => 1,
'level_names' => Array
(
0 => '初始等级',
1 => '一星会员',
2 => '二星会员',
3 => '三星会员',
5 => '五星会员'
)
)
];
// 根据 low_level 字段升序排列,相同时再根据 created_at 字段倒序排序
$sortRights = array_sort($rights, 'low_level', SORT_ASC, 'created_at', SORT_DESC);
// 打印
echo '<pre>';
print_r($sortRights);
echo '</pre>';
// 排序后的数组
Array
(
[0] => Array
(
[id] => 81
[title] => 权益二十一
[created_at] => 2019-08-26 11:41:51
[low_level] => 1
[level_names] => Array
(
[0] => 初始等级
[1] => 一星会员
[2] => 二星会员
[3] => 三星会员
[5] => 五星会员
)
)
[1] => Array
(
[id] => 79
[title] => 权益十九
[created_at] => 2019-08-26 11:41:49
[low_level] => 1
[level_names] => Array
(
[0] => 初始等级
[1] => 一星会员
[2] => 二星会员
[3] => 三星会员
[4] => 四星会员
)
)
[2] => Array
(
[id] => 61
[title] => 权益一
[level_id] => 20
[created_at] => 2019-08-26 11:01:29
[low_level] => 1
[level_names] => Array
(
[0] => 初始等级
[1] => 一星会员
[2] => 二星会员
[3] => 三星会员
[4] => 四星会员
[5] => 五星会员
)
)
[3] => Array
(
[id] => 78
[title] => 权益十八
[created_at] => 2019-08-26 11:41:40
[low_level] => 2
[level_names] => Array
(
[0] => 初始等级
[1] => 一星会员
[3] => 三星会员
[4] => 四星会员
)
)
[4] => Array
(
[id] => 80
[title] => 权益二十
[created_at] => 2019-08-26 11:41:58
[low_level] => 3
[level_names] => Array
(
[0] => 初始等级
[1] => 一星会员
[2] => 二星会员
[3] => 三星会员
[4] => 四星会员
[5] => 五星会员
)
)
)