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
转载随意!带上文章地址吧。