【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
//自定义函数:
{
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;
}
//处理
//输出
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()。