PHP自定义数组排序

PHP数组排序函数很多,也很强大
如:arsort,asort,krsort,ksort,sort…
但有时候还是满足不了我们的需求
假如有一个二维数组,我们要按二维数组中的一个值来排序
就需要用到了usort自定义数组排序

例子如下:

 
<?php
 
$aa = array (array ("score"=>60), 
			 array ("score"=>70),
			 array ("score"=>80),
			 array ("score"=>90),
			 array ("score"=>20),
			 array ("score"=>10),
			 array ("score"=>50),
			 array ("score"=>30));
 
echo '------排序前输出------<br />';			 
var_dump($aa); // 排序前输出
 
usort($aa, "cmp"); // 排序处理(从大到小)
 
echo '<br />------排序后输出------<br />';
var_dump($aa); // 排序完输出
 
/**
 * 自定义排序条件
 * @param array $a
 * @param array $b
 * @return bool
 */
function cmp($a, $b) {
	if ($a["score"] == $b["score"]) {
		return 0;
	}
	return ($a["score"] < $b["score"]) ? 1 : -1;
}
 
?>

输出结果:

------排序前输出------
array(8) { [0]=> array(1) { ["score"]=> int(60) } 
	[1]=> array(1) { ["score"]=> int(70) } 
	[2]=> array(1) { ["score"]=> int(80) } 
	[3]=> array(1) { ["score"]=> int(90) } 
	[4]=> array(1) { ["score"]=> int(20) } 
	[5]=> array(1) { ["score"]=> int(10) } 
	[6]=> array(1) { ["score"]=> int(50) } 
	[7]=> array(1) { ["score"]=> int(30) } } 
------排序后输出------
array(8) { [0]=> array(1) { ["score"]=> int(90) } 
	[1]=> array(1) { ["score"]=> int(80) } 
	[2]=> array(1) { ["score"]=> int(70) } 
	[3]=> array(1) { ["score"]=> int(60) } 
	[4]=> array(1) { ["score"]=> int(50) } 
	[5]=> array(1) { ["score"]=> int(30) } 
	[6]=> array(1) { ["score"]=> int(20) } 
	[7]=> array(1) { ["score"]=> int(10) } }