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') ); ?>
以上结果如下: