算法帝国
精通算法者,集数千宠爱于一生,睥睨程序,智慧人生......
PHP 对二维数组指定key排序

PHP对二维数组指定的列进行排序,这里介绍两种方法:

1、利用php array_multisort函数

// 参数:$arr 二维数组 ,$key 需要排序的列 $type 排序类型 $short 排序方式
function multi_array_sort($arr,$key,$type=SORT_REGULAR,$short=SORT_DESC){
	foreach ($arr as $k => $v){
		$name[$k] = $v[$key];
	}
	array_multisort($name,$type,$short,$arr);
	return $arr;
}


2、获取key值,进行排序,然后整理成二维数组

function array_sort($arr,$key,$type='asc'){ 
	$keysvalue = $new_array = array();
	// 获取key
	foreach ($arr as $k=>$v){
		$keysvalue[$k] = $v[$key];
	}
	// key排序
	if($type == 'asc'){
		asort($keysvalue);
	}else{
		arsort($keysvalue);
	}
	reset($keysvalue);

	// 根据key排序整理正确二维数组顺序
	foreach ($keysvalue as $k=>$v){
		$new_array[$k] = $arr[$k];
	}
	return $new_array; 
} 


来看看两种方式排序结果吧,测试代码如下:

<?php 
$arr = array(
	array(
		'key'=>1,
		'wd'=>'cc'
		),
	array(
		'key'=>3,
		'wd'=>'bb'
		),
	array(
		'key'=>1,
		'wd'=>'a'
		),
	array(
		'key'=>2,
		'wd'=>'d'
		),
	);

// 参数:$arr 二维数组 ,$key 需要排序的列 $type 排序类型 $short 排序方式
function multi_array_sort($arr,$key,$type=SORT_REGULAR,$short=SORT_DESC){
	foreach ($arr as $k => $v){
		$name[$k] = $v[$key];
	}
	array_multisort($name,$type,$short,$arr);
	return $arr;
}
echo '<pre>';
var_dump( multi_array_sort($arr,'key') );


// 获取key值,进行排序,然后整理成二维数组
function array_sort($arr,$key,$type='asc'){ 
	$keysvalue = $new_array = array();
	// 获取key
	foreach ($arr as $k=>$v){
		$keysvalue[$k] = $v[$key];
	}
	// key排序
	if($type == 'asc'){
		asort($keysvalue);
	}else{
		arsort($keysvalue);
	}
	reset($keysvalue);

	// 根据key排序整理正确二维数组顺序
	foreach ($keysvalue as $k=>$v){
		$new_array[$k] = $arr[$k];
	}
	return $new_array; 
} 

echo '----------------华丽丽的分割线------------------<br>';
var_dump( multi_array_sort($arr,'wd') );

?>

以上结果如下:

QQ截图20150129153503.png

<< 上一篇 d3js 矩阵图 thinkphp中session写入数据库 下一篇 >>
文章标签
随意 | Created At 2014 By William Clinton | Contact Me: 1619488373@qq.com | 蜀ICP备14002619号 |