根据usort函数自定义一个可灵活配置的对象数组排序方式,如果有更好的方案欢迎提出
/**
* @param array $array 源对象数组
* @param array $key_array 需要排序的键,比如:先根据pid排序再根据id排序,为['pid', 'id']
* @param array $sort 升序-0,降序-1,比如:先根据pid升序再根据id降序,为[0, 1]
*/
function myUsort(array $array, array $key_array, array $sort)
{
if (count($key_array) != count($sort)) return $array;
usort($array, function ($a, $b) use ($key_array, $sort) {
foreach ($key_array as $index => $key) {
if ($a[$key] != $b[$key]) {
return ($sort[$index] ? $a[$key] < $b[$key] : $a[$key] > $b[$key])
? 1 : -1;
}
}
return 1; //默认值
});
return $array;
}