多维数组排序

php php 990      收藏
多维数组排序

/*
 * sort_order		可选。规定排列顺序。可能的值:
 *		SORT_ASC - 默认。按升序排列 (A-Z)。
 *		SORT_DESC - 按降序排列 (Z-A)。
 * sort_type		可选。规定排序类型。可能的值:
 *		SORT_REGULAR - 默认。把每一项按常规顺序排列(Standard ASCII,不改变类型)。
 *		SORT_NUMERIC - 把每一项作为数字来处理。
 *		SORT_STRING - 把每一项作为字符串来处理。
 *		SORT_LOCALE_STRING - 把每一项作为字符串来处理,基于当前区域设置(可通过 setlocale() 进行更改)。
 *		SORT_NATURAL - 把每一项作为字符串来处理,使用类似 natsort() 的自然排序。
 *		SORT_FLAG_CASE - 可以结合(按位或)SORT_STRING 或 SORT_NATURAL 对字符串进行排序,不区分大小写。
 */
function my_array_multisort($data,$sort_order_field,$sort_order=SORT_ASC,$sort_type=SORT_NUMERIC){
	foreach( $data as $val ){
		$key_arrays[]=$val[$sort_order_field];
	}
	array_multisort($key_arrays,$sort_order,$sort_type,$data);
	return $data;
}

//顺便放上现在正在用的排序函数方便对比

//二维数组按照指定的键值进行排序
function array_sort($arr,$keys,$type='asc'){
	$keysvalue = $new_array = array();
	foreach ($arr as $k=>$v){
		$keysvalue[$k] = $v[$keys];
	}
	if($type == 'asc'){
		asort($keysvalue);
	}else{
		arsort($keysvalue);
	}
	reset($keysvalue);
	$j=0;
	foreach ($keysvalue as $k=>$v){
		$new_array[$j] = $arr[$k];
		$j++;
	}
	return $new_array;
}