php 二维数组的分组排序实现代码
分组排序,代码如下:
<?php $new2 [ 'group' ][ 'key' ]= 'time' ; $new [ 'aa' ][ 'b' ]=44; $new [ 'aa' ][ 'c' ]=33; $new [ 'aa' ][ 'd' ]=34; $new [ 'bb' ][ 'b' ]=55; $new [ 'bb' ][ 'c' ]=32; $new [ 'cc' ][ '4' ]=77; $new [ 'dd' ][ 'g' ]=55; $new [ 'dd' ][ 'c' ]=54; function arr_group_sort( $new ){ foreach ( $new as $key => $val ){ asort( $new [ $key ]); //分别对每一组的数据进行排序; $tmp = $new [ $key ]; //将排序后的数据赋值给一个临时数组; $tmp []= $key ; //将原来数组的键值加入到临时数组的末尾,为后期的修改键值的步骤做准备; $a = array_shift ( $new [ $key ]); //将每一组的第一项(最小项)数据取出来,以aa组为例子,$a此时的值就为33; $aa [ $a ]= $tmp ; //新建一个数组,以$aa(比如33)为键值; ksort( $aa ); //按照键值排序 } foreach ( $aa as $key => $val ){ //按照键值排序的数组,已经失去了原来的键值,比如aa/bb/cc/dd之类的,好在我们之前已经将键值存入了临时数组的末尾; $b = array_pop ( $aa [ $key ]); //将键值取出来; $bb [ $b ]= $aa [ $key ]; //从新建立一个数组,使用之前的键值(aa/bb/cc) } return $bb ; //返回 } $c =arr_group_sort( $new ); print_r( $new ); //原数组; print_r( $c ); //分组排序后的数组; ?>其它的二维数组排序的方法,代码如下:
function array_sort( $arr , $keys , $type = 'asc' ){ $keysvalue = $new_array = array (); foreach ( $arr as $k => $v ){ $keysvalue [ $k ] = $v [ $keys ]; } if ( $type == 'asc' ){ asort( $keysvalue ); } else { arsort( $keysvalue ); } reset( $keysvalue ); foreach ( $keysvalue as $k => $v ){ $new_array [ $k ] = $arr [ $k ]; } return $new_array ; }它可以对二维数组按照指定的键值进行排序,也可以指定升序或降序排序法(默认为升序),用法示例如下:
$array = array ( array ( 'name' => '手机' , 'brand' => '诺基亚' , 'price' =>1050), array ( 'name' => '笔记本电脑' , 'brand' => 'lenovo' , 'price' =>4300), array ( 'name' => '剃须刀' , 'brand' => '飞利浦' , 'price' =>3100), array ( 'name' => '跑步机' , 'brand' => '三和松石' , 'price' =>4900), array ( 'name' => '手表' , 'brand' => '卡西欧' , 'price' =>960), array ( 'name' => '液晶电视' , 'brand' => '索尼' , 'price' =>6299), array ( 'name' => '激光打印机' , 'brand' => '惠普' , 'price' =>1200) ); $ShoppingList = array_sort( $array , 'price' ); print_r( $ShoppingList );查看更多关于php 二维数组的分组排序实现代码 - php数组的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did31288