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

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

转载随意!带上文章地址吧。

标签:php二维数组 php分组排序

相关文章

发表留言