温馨提示:本文共1077个字,读完预计3分钟。
PHP中对二维数组的排序
方法一:
/**
* 二维数组根据某个字段排序
* @param array $array 要排序的数组
* @param string $keys 要排序的键字段
* @param string $sort 排序类型 SORT_ASC SORT_DESC
* @return array 排序后的数组
*/
function arraySort($array, $keys, $sort = SORT_ASC) {
$keysValue = [];
foreach ($array as $k => $v) {
$keysValue[$k] = $v[$keys];
}
array_multisort($keysValue, $sort, $array);
return $array;
}
方法二:
/*
* 二维数组排序
* */
public function zk_sort_array_multi(array &$arr, array $keys, array $order)
{
//校验参数
if ( count($keys) == ($times = count($order)) ) {
for ( $i = 0, $j = 0; $j < $times; $i += 2, $j++ ) {
foreach ( $arr as $k => $v ) {
//原数组是否存在该字段
if ( isset($v[$keys[$j]]) ) {
$params[$i][] = $v[$keys[$j]]; //TODO 中文排序支持 //$params[$i][] = iconv(‘UTF-8’, ‘GBK’, $v[$keys[$j]]);
} else {
return false;
}
}
if ( strtoupper($order[$j]) == 'ASC' ) {
$params[$i + 1] = SORT_ASC;
} else {
$params[$i + 1] = SORT_DESC;
}
}
$params[] = &$arr;
return call_user_func_array('array_multisort', $params);
} else {
return false;
}
}