/**
* 根据数组指定键名排序数组
* @param $array array 被排序数组
* @param $key_name string 数组键名
* @param $sort string desc|asc 升序或者降序
* @return array 返回排序后的数组
* 例子:传入数组 $array=array(array('id'=>1,'sort'=>20),array('id'=>2,'sort'=>10),array('id'=>3,'sort'=>30));
* gw_sort($array,'sort','asc');
* 伪代码结果: sort:10,sort:20,sort:30
*/
function gw_sort($array,$key_name,$sort){
$key_name_array = array();//保存被排序数组键名
foreach($array as $key=>$val){
$key_name_array[] = $val[$key_name];
}
if($sort=="desc"){
rsort($key_name_array);
}else if($sort=="asc"){
sort($key_name_array);
}
$key_name_array = array_flip($key_name_array);//反转键名和值得到数组排序后的位置
$result = array();
foreach($array as $k=>$v){
$this_key_name_value = $v[$key_name];//当前数组键名值依次是20,10,30
$save_position = $key_name_array[$this_key_name_value];//获取20,10,30排序后存储位置
$result[$save_position] = $v;//当前项存储到数组指定位置
}
ksort($result);
return $result;
}