在做开发的时候有时候会因某个字段按照一个自定义的顺序来排序,本章节讲述一个例子按照1-0-2的顺序排序
先来个二维数组
$taskList = [
0 => [
"id" => "6",
"taskName" => "邀请好友注册",
"status" => "0"
],
1 => [
"id" => "5",
"taskName" => "视频分享1次",
"status" => "1"
],
2 => [
"id" => "12",
"taskName" => "视频评论1次",
"status"=> "0"
],
3 => [
"id" => "3",
"taskName" => "实名认证",
"status" => "2"
],
4 => [
"id" => "4",
"taskName" => "视频点赞1次",
"status" => "1"
],
];
先将二维数组按照正序/倒序排列
array_multisort(array_column($taskList,'status'),SORT_ASC,$taskList);
然后使用usort 函数来完成自定义排序
usort($taskList, function($a, $b){
if ($a['status'] == $b['status'])
return 0;
if ($a['status'] == 2)
return -1;
if ($b['status'] == 2)
return -1;
return ($a['status'] > $b['status']) ? -1 : 1;
});
返回的最终结果:
Array
(
[0] => Array
(
[id] => 4
[taskName] => 视频点赞1次
[status] => 1
)
[1] => Array
(
[id] => 5
[taskName] => 视频分享1次
[status] => 1
)
[2] => Array
(
[id] => 6
[taskName] => 邀请好友注册
[status] => 0
)
[3] => Array
(
[id] => 12
[taskName] => 视频评论1次
[status] => 0
)
[4] => Array
(
[id] => 3
[taskName] => 实名认证
[status] => 2
)
)