首页 > php数组 > PHP多维数组排序实现程序代码

PHP多维数组排序实现程序代码

在php中对数组排序包括一维数组排序与多维数组排序,下面我来详细介绍利用php数组排序函数与自定函数来实现数据排序的具体方法.

单数组排序,sort函数升序排序:

bool sort ( array &$array [, int $sort_flags= SORT_REGULAR ] )

PHP实例代码如下:

<?php 
    $fruits = array("lemon", "orange", "banana", "apple"); 
    sort($fruits); 
    var_dump($fruits);

-rsort降序排列--,代码如下:

<?php 
    $fruits = array("lemon", "orange", "banana", "apple"); 
    rsort($fruits);var_dump($fruits);

比如有个多维数组,代码如下:

$arr = array( 
   'd' => array('id' => 5, 'name' => 1, 'age' => 7), 
   'b' => array('id' => 2,'name' => 3,'age' => 4), 
   'a' => array('id' => 8,'name' => 10,'age' => 5), 
   'c' => array('id' => 1,'name' => 2,'age' => 2) 
);

需要对二维数组中的 age 项排序,需要用到PHP的内置函数 array_multisort(),array_multisort() 需要一个包含列的数组,因此用以下代码来取得列,然后排序,代码如下:

// 取得列的列表 

    foreach ($data as $key => $row) { 
        $volume[$key]  = $row['volume']; 
        $edition[$key] = $row['edition']; 
    }

    // 将数据根据 volume 降序排列,根据 edition 升序排列 

    // 把 $data 作为最后一个参数,以通用键排序 

    array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data); 

    数据集合现在排好序了,结果如下: 

    volume | edition 
    -------+-------- 
        98 |       2 
        86 |       1 
        86 |       6 
        85 |       6 
        67 |       2 
        67 |       7

自定义函数,代码如下:

function multi_array_sort($multi_array,$sort_key,$sort=SORT_ASC) 
{ 
    if(is_array($multi_array)) 
    { 
        foreach ($multi_array as $row_array) 
        { 
            if(is_array($row_array)) 
            { 
                $key_array[] = $row_array[$sort_key]; 
            } 
            else 
            { 
                return false; 
            } 
        } 
    } 
    else 
    { 
        return false; 
    } 
    array_multisort($key_array,$sort,$multi_array); 
    return $multi_array; 
} 
//处理 
print_r(multi_array_sort($arr,'age'));

//输出 

 Array 
( 
    [c] => Array 
        ( 
            [id] => 1 
            [name] => 2 
            [age] => 2 
        ) 
 
    [b] => Array 
        ( 
            [id] => 2 
            [name] => 3 
            [age] => 4 
        ) 
 
    [a] => Array 
        ( 
            [id] => 8 
            [name] => 10 
            [age] => 5 
        ) 
 
    [d] => Array 
        ( 
            [id] => 5 
            [name] => 1 
            [age] => 7 
        ) 
 
)

实际上真正在排序的时候还有很多方法可以使用,比如php的array数组自带的 arsort(),asort(),ksort(),krsort(),natsort(),natcasesort(),rsort(),usort(),array_multisort() 和 uksort().


教程网址:http://www.phprm.com/shuzu/fs5579.html

欢迎收藏∩_∩但请保留本文链接。

标签:php数组排序 php多维数组排序

相关文章

发表留言