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;
- }//开源软件:phpfensi.com
- //处理
- 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().