PHP多维数组排序代码例

函数
<?php 
function sortData($data, $col, $order){
	if (count($data)) $temp_array[key($data)] = array_shift($data); 

	foreach($data as $key => $val){
		$offset = 0;
		$found = false;
		foreach($temp_array as $tmp_key => $tmp_val){
			if(!$found and strtolower($val[$col]) > strtolower($tmp_val[$col])){
				$temp_array = array_merge((array)array_slice($temp_array,0,$offset),
					array($key => $val),
					array_slice($temp_array,$offset)
				);
				$found = true;
			}
			$offset++;
		}
		if(!$found) {
			$temp_array = array_merge($temp_array, array($key => $val));
			}
	}
	if (strtolower($order)=="asc"){
		$array = array_reverse($temp_array);
	} else {
		$array = $temp_array;
	}
	return $array;
}


主函数
$data=array(
	array(
		'name'=>'Alice',
		'key'=>'2fc4ab3d639e5400efdfc73bc27e83f1',
		'age'=>20
	),
	array(
		'name'=>'Claudia',
		'key'=>'831c2b79c1f19af39c7e3321e11e5f5e',
		'age'=>18
	),
	array(
		'name'=>'Beatrice',
		'key'=>'6f8512a2066b8f35a27a495ce1228c76',
		'age'=>100
	),
	array(
		'name'=>'Denise',
		'age'=>25,
		'key'=>'ef6de3b178bf9f69a9fef72e4ee7bbe9'
	)
);

$arr1 = sortdata($data, "name","asc");
echo "<pre>";
var_dump($arr1);
echo "</pre>"; 

$arr2 = sortdata($data, "age","desc");
echo "<pre>";
var_dump($arr2);
echo "</pre>";

你可能感兴趣的:(PHP)