直接上代码
if (!function_exists('sortByTwoField')) {
/**
* 数组按照两个字段排序
* @param array $data 传入数组
* @param string $field1 (首要字段+空格+排序方法) 例:field1 desc 默认DESC
* @param string $field2 (次要字段+空格+排序方法) 例:field2 asc 默认DESC
* @return array|string 排序好的数组
*/
function sortByTwoField($data, $field1 = '', $field2 = '')
{
if(!is_array($data)) return '请传入数组';
if (count($data) <= 0 || empty($field1) || empty($field2)) return $data;
$sort1 = SORT_DESC;
$sort2 = SORT_DESC;
$f1 = explode(" ", $field1);
$field1 = $f1[0];
if (isset($f1[1])) {
if (strtolower($f1[1]) == 'asc') $sort1 = SORT_ASC;
}
$f2 = explode(" ", $field2);
$field2 = $f2[0];
if (isset($f2[1])) {
if (strtolower($f2[1]) == 'asc') $sort2 = SORT_ASC;
}
foreach ($data as $key => $value) {
if (!isset($value[$field1])) return ["字段'{$field1}'不存在"];
if (!isset($value[$field2])) return ["字段'{$field2}'不存在"];
$price[$key] = $value[$field1];
$num[$key] = $value[$field2];
}
array_multisort($price, $sort1, $num, $sort2, $data);
return $data;
}
}
调用方法 sortByTwoField(数组,'首要字段+空格+排序','次要字段+空格+排序') 不填写排序则默认倒序
$phb = array(
['id'=>1,'daka_day60'=>'1','likes'=>'8'],
['id'=>2,'daka_day60'=>'8','likes'=>'1'],
['id'=>3,'daka_day60'=>'5','likes'=>'2'],
['id'=>4,'daka_day60'=>'5','likes'=>'7'],
['id'=>5,'daka_day60'=>'5','likes'=>'5'],
) ;
$phb = sortByTwoField($phb, 'daka_day60', 'likes asc');
结果
"phb": [
{
"id": 2,
"daka_day60": "8",
"likes": "1"
},
{
"id": 3,
"daka_day60": "5",
"likes": "2"
},
{
"id": 5,
"daka_day60": "5",
"likes": "5"
},
{
"id": 4,
"daka_day60": "5",
"likes": "7"
},
{
"id": 1,
"daka_day60": "1",
"likes": "8"
}
]

发表评论 取消回复