Heim >php教程 >PHP源码 >php 二维数组的分组排序实现代码

php 二维数组的分组排序实现代码

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-08 17:23:501327Durchsuche

本文章来给各位同学介绍php 二维数组的分组排序实现代码,有需要了解的朋友可参考。

<script>ec(2);</script>

分组排序

 代码如下 复制代码

$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);

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn