方式1 : 数组转集合,根据排列条件优先级拼接sort字段
//测试数组
$testData = [
[
'name' => '张三',
'score' => '96',
'time' => '2021-12-01',
],
[
'name' => '张三',
'score' => '85',
'time' => '2021-11-01',
],
[
'name' => '李四',
'score' => '91',
'time' => '2021-12-01',
],
[
'name' => '李四',
'score' => '97',
'time' => '2021-11-01',
],
];
//数组转集合,根据排列条件优先级拼接sort字段
$result = collect($testData)->map(function($data){
$data['sort'] = $data['name'].'_'.$data['time'].'_'.$data['score'];
return $data;
})->sortBy('sort')->toArray();
//去除数组中sort(可选)
$result = collect($result)->map(function($data){
unset($data['sort']);
return $data;
})->toArray();
//重新排序key(可选)
$result = array_value($result);
方式二,链式使用sortBy,后者优先级高
但这种排序一般不尽人意
$result = collect($testData)->sortBy('字段1')->sortBy('字段2');