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

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Release: 2016-06-08 17:23:50
Original
1330 people have browsed it

本文章来给各位同学介绍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);

Related labels:
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template