您的位置:首页 > 编程语言 > PHP开发

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

2013-09-05 19:02 811 查看
在php中对数组排序包括一维数组排序与多维数组排序,下面我来详细介绍利用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()。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: