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

PHP一维、二维以及多维的数组排序方法

2011-12-12 23:21 756 查看




1、一维数组排序

a、sort–本函数对数组进行排序。当本函数结束时数组单元将被从最低到最高重新安排。注:本函数为 array 中的单元赋予新的键名。这将删除原有的键名而不仅是重新排序

<?php
$fruits = array("lemon", "orange", "banana", "apple");
sort($fruits);
foreach ($fruits as $key => $val) {
echo "fruits[".$key."] = " . $val . "\n";
}
?>


上例将输出:

# fruits[0] = apple

# fruits[1] = banana

# fruits[2] = lemon

# fruits[3] = orange

b、asort — 对数组进行排序并保持索引关系。本函数对数组进行排序,数组的索引保持和单元的关联。主要用于对那些单元顺序很重要的结合数组进行排序。

<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
arsort($fruits);
foreach ($fruits as $key => $val) {
echo "$key = $val\n";
}
?>


上例将输出:

a = orange

d = lemon

b = banana

c = apple

2、多维数组排序

<?php
$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);
?>


本例中将把 volume 降序排列,把 edition 升序排列

现在有了包含有行的数组,但是 array_multisort() 需要一个包含列的数组,因此用以下代码来取得列,然后排序

<?php
// 取得列的列表
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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: