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); //分组排序后的数组; ?>
其它的二维数组排序的方法,代码如下:
<?php 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; } ?>
它可以对二维数组按照指定的键值进行排序,也可以指定升序或降序排序法(默认为升序),用法示例如下:
<?php $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); ?>
永久链接:http://www.phprm.com/shuzu/fs3827.html
转载随意!带上文章地址吧。