PHP多维数组排序array详解
在PHP中,数组可以看作是一个集合,而集合是由等级相同的元素组成的,因此数组就有了多维度的概念。在实际开发中,我们经常需要按照指定的规则对多维数组进行排序,这个时候,我们就需要使用PHP的排序函数来实现。
数组排序方法
在PHP中,常用的数组排序方法主要有以下几种:
- sort():将数组按照升序排列。
- rsort():将数组按照降序排列。
- asort():将数组按照升序排列,并保持索引关系。
- arsort():将数组按照降序排列,并保持索引关系。
- ksort():将数组按照键名升序排列。
- krsort():将数组按照键名降序排列。
- uasort():使用用户自定义的比较函数对数组进行排序,并保持索引关系。
- usort():使用用户自定义的比较函数对数组进行排序。
多维数组排序
多维数组排序需要具体分析,根据具体情况采取不同的排序方法。以下是常见的多维数组排序方法及示例。
按照二维数组的某个键对数组进行排序
下面的示例将一个二维数组($arr)按照 'age' 键的值进行降序排序:
<?php
// 二维数组
$arr = array(
array('name' => '张三', 'age' => 20, 'id' => 10001),
array('name' => '李四', 'age' => 18, 'id' => 10002),
array('name' => '王五', 'age' => 22, 'id' => 10003),
array('name' => '赵六', 'age' => 19, 'id' => 10004),
);
// 按照 'age' 降序排序
arsort($arr);
print_r($arr);
?>
输出结果:
Array
(
[2] => Array
(
[name] => 王五
[age] => 22
[id] => 10003
)
[0] => Array
(
[name] => 张三
[age] => 20
[id] => 10001
)
[3] => Array
(
[name] => 赵六
[age] => 19
[id] => 10004
)
[1] => Array
(
[name] => 李四
[age] => 18
[id] => 10002
)
)
按照三维数组的某个键对数组进行排序
下面的示例将一个三维数组($arr)按照 'book' 键下的 'price' 值进行升序排序:
<?php
// 三维数组
$arr = array(
array(
'category' => 'PHP',
'book' => array(
array('name' => 'PHP基础教程', 'price' => 45),
array('name' => 'PHP高级教程', 'price' => 60),
),
),
array(
'category' => 'JavaScript',
'book' => array(
array('name' => 'JavaScript基础教程', 'price' => 35),
array('name' => 'JavaScript高级教程', 'price' => 50),
),
)
);
// 按照 'book' 下的 'price' 升序排序
function cmp($a, $b)
{
if ($a['price'] == $b['price']) {
return 0;
}
return ($a['price'] < $b['price']) ? -1 : 1;
}
foreach ($arr as &$val) {
usort($val['book'], 'cmp');
}
print_r($arr);
?>
输出结果:
Array
(
[0] => Array
(
[category] => PHP
[book] => Array
(
[0] => Array
(
[name] => PHP基础教程
[price] => 45
)
[1] => Array
(
[name] => PHP高级教程
[price] => 60
)
)
)
[1] => Array
(
[category] => JavaScript
[book] => Array
(
[0] => Array
(
[name] => JavaScript基础教程
[price] => 35
)
[1] => Array
(
[name] => JavaScript高级教程
[price] => 50
)
)
)
)
总结
以上就是PHP中多维数组排序的详细总结,不同的多维数组排序方法,需要根据实际情况进行选择。同时需要注意的是,使用不同的数组排序方法,可能会影响原数组的索引顺序,需要谨慎使用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP多维数组排序array详解 - Python技术站