PHP实现二维数组根据单个字段或两个字段进行排序的功能。arraySort
函数用于按单一字段排序,而arraySort2
函数则实现了按两个字段排序。这两个函数都利用了array_multisort
函数,可以方便地调整排序方式(升序或降序)。示例中展示了如何调用这两个函数对数组的’abbreviation’和’name’字段进行排序。
/**
* 二维数组根据某个字段排序
* @param array $array 要排序的数组
* @param string $keys 要排序的键字段
* @param mixed $sort 排序类型 SORT_ASC SORT_DESC
* @return array 排序后的数组
*/
public function arraySort($array, $keys, $sort=SORT_DESC) {
$keysValue = [];
foreach ($array as $k => $v) {
$keysValue[$k] = $v[$keys];
}
array_multisort($keysValue, $sort, $array);
return $array;
}
/**
* 二维数组根据某2个字段排序
* @param array $array 要排序的数组
* @param string $f1 要排序的键字段1
* @param string $f2 要排序的键字段2
* @param mixed $sort 排序类型 SORT_ASC SORT_DESC
* @return array 排序后的数组
*/
public function arraySort2($array, $f1, $f2, $sort=SORT_ASC){
$f1Arr = $f2Arr = [];
foreach ($array as $key => $val ){
$f1Arr[$key] = $val[$f1];
$f2Arr[$key] = $val[$f2];
}
array_multisort($f1Arr, $sort, $f2Arr, $sort, $array);
return $array;
}
// 调用
$ret = $this->arraySort2($ret, 'abbreviation', 'name');