php数组倒序不改键值,php如何对数组排序并保持键值不变

PHP二维数组排序代码


原数组:

$data = array(
1001 => array(
'age' => 22,
'name' => '鸠摩智'
),

1007 => array(
'age' => 21,
'name' => '慕容复'
),

1004 => array(
'age' => 27,
'name' => '乔帮主'
)
);

我们根据年龄(age)来排序:

<?php
$data = 数组
$data = arraySort($data, "age", "desc" );
print_r($data);
/**
* @desc arraySort php二维数组排序 按照指定的key 对数组进行自然排序
* @param array $arr 将要排序的数组
* @param string $keys 指定排序的key
* @param string $type 排序类型 asc | desc
* @return array
*/
function arraySort($arr, $keys, $type = 'asc') {
	$keysvalue = $new_array = array();
	foreach ($arr as $k => $v) {
		$keysvalue[$k] = $v[$keys];
	}
	if ($type == 'asc') {
		natsort($keysvalue);
	}
	if ($type == 'desc') {
		natsort($keysvalue);
		$keysvalue = array_reverse($keysvalue, TRUE);
		// 将原数组中的元素顺序翻转,如果第二个参数指定为 true,则元素的键名保持不变
	}
	foreach ($keysvalue as $k => $v) {
		$new_array[$k] = $arr[$k];
	}
	return $new_array;
}

asc是倒叙,desc是顺序,自己改变type。