php遍历多维数组_PHP多维数组排序实现程序代码

更新时间:2017-11-03    来源:php函数    手机版     字体:

【www.bbyears.com--php函数】

单数组排序

sort函数升序排序

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

 代码如下

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

-rsort降序排列--

 

 代码如下

$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.bbyears.com/jiaocheng/36787.html