php三维数组怎么排序
时间 : 2023-03-23 00:12:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性
PHP中对数组进行排序有两种方法:asort()和usort()。asort()可以对数组按照值进行升序排序,而usort()可以对数组按照自定义的排序算法进行排序。
如果需要对多维数组进行排序,则可以使用usort()函数和自定义的排序算法。下面给出一个示例代码:
<?php
$multidimensional_array = array(
array("name"=>"Tom", "age"=>18, "height"=>170),
array("name"=>"John", "age"=>21, "height"=>175),
array("name"=>"Harry", "age"=>20, "height"=>165)
);
function compare_by_age($a, $b){
if ($a['age'] == $b['age']) {
return 0;
}
return ($a['age'] < $b['age']) ? -1 : 1;
}
usort($multidimensional_array, 'compare_by_age');
print_r($multidimensional_array);
?>
在上面的代码中,$multidimensional_array是一个二维数组。compare_by_age()函数是自定义的排序算法,用于按照age字段的值进行排序。最后使用usort()函数对数组进行排序,将排序算法作为第二个参数传递给usort()函数。
如果需要对多维数组按照其他字段进行排序,则可以修改compare_by_age()函数中的排序条件即可。
值得注意的是,当使用usort()函数时,需要注意数组键(也称为索引)的顺序,将影响到排序结果。在上面的示例中,我们没有指定数组键的顺序,默认使用了0、1、2等整数作为键。
如果需要按照特定的键进行排序,则需要先使用uasort()函数将数组按照键排序,然后再使用usort()函数将数组按照值排序即可。
首先,PHP中的三维数组是指一个数组里面包含多个数组,而这些数组又包含多个数组,所以需要对这些数组进行排序时,我们需要使用PHP中的排序函数。在PHP中有很多种排序函数,例如sort()、asort()、ksort()、arsort()、krsort()等,下面分别介绍各个函数的用法以及这些排序函数的差异。
1. sort()函数
sort()函数是将数组按照升序排序,如果需要按照降序排序,则需要使用rsort()函数。下面是sort()函数的使用方法:
```php
$threeDArray = [
[
[1, 4, 3],
[10, 3, 5],
[7, 8, 5]
],
[
[5, 9, 2],
[6, 2, 4],
[8, 1, 7]
]
];
foreach ($threeDArray as &$arr) {
foreach ($arr as &$subArr) {
sort($subArr);//对每个二维数组进行排序
}
unset($subArr);
}
print_r($threeDArray);
输出的结果如下:
Array
(
[0] => Array
(
[0] => Array
(
[0] => 1
[1] => 3
[2] => 4
)
[1] => Array
(
[0] => 3
[1] => 5
[2] => 10
)
[2] => Array
(
[0] => 5
[1] => 7
[2] => 8
)
)
[1] => Array
(
[0] => Array
(
[0] => 2
[1] => 5
[2] => 9
)
[1] => Array
(
[0] => 2
[1] => 4
[2] => 6
)
[2] => Array
(
[0] => 1
[1] => 7
[2] => 8
)
)
)
2. asort()函数
asort()函数是将数组按照值的升序排列,并保留原来的索引关系。下面是asort()函数的使用方法:
```php
$threeDArray = [
[
[1, 4, 3],
[10, 3, 5],
[7, 8, 5]
],
[
[5, 9, 2],
[6, 2, 4],
[8, 1, 7]
]
];
foreach ($threeDArray as &$arr) {
foreach ($arr as &$subArr) {
asort($subArr);//对每个二维数组进行排序
}
unset($subArr);
}
print_r($threeDArray);
输出的结果如下:
Array
(
[0] => Array
(
[0] => Array
(
[0] => 1
[2] => 3
[1] => 4
)
[1] => Array
(
[1] => 3
[2] => 5
[0] => 10
)
[2] => Array
(
[2] => 5
[0] => 7
[1] => 8
)
)
[1] => Array
(
[0] => Array
(
[0] => 2
[2] => 9
[1] => 5
)
[1] => Array
(
[1] => 2
[2] => 4
[0] => 6
)
[2] => Array
(
[1] => 1
[0] => 8
[2] => 7
)
)
)
3. ksort()函数
ksort()函数是将数组按照键的升序排列。下面是ksort()函数的使用方法:
```php
$threeDArray = [
[
['a'=>1, 'b'=>4, 'c'=>3],
['a'=>10, 'b'=>3, 'c'=>5],
['a'=>7, 'b'=>8, 'c'=>5]
],
[
['a'=>5, 'b'=>9, 'c'=>2],
['a'=>6, 'b'=>2, 'c'=>4],
['a'=>8, 'b'=>1, 'c'=>7]
]
];
foreach ($threeDArray as &$arr) {
foreach ($arr as &$subArr) {
ksort($subArr);//对每个二维数组进行排序
}
unset($subArr);
}
print_r($threeDArray);
输出的结果如下:
Array
(
[0] => Array
(
[0] => Array
(
[a] => 1
[b] => 4
[c] => 3
)
[1] => Array
(
[a] => 10
[b] => 3
[c] => 5
)
[2] => Array
(
[a] => 7
[b] => 8
[c] => 5
)
)
[1] => Array
(
[0] => Array
(
[a] => 5
[b] => 9
[c] => 2
)
[1] => Array
(
[a] => 6
[b] => 2
[c] => 4
)
[2] => Array
(
[a] => 8
[b] => 1
[c] => 7
)
)
)
4. arsort()函数
arsort()函数是将数组按照值的降序排列,并保留原来的索引关系。下面是arsort()函数的使用方法:
```php
$threeDArray = [
[
[1, 4, 3],
[10, 3, 5],
[7, 8, 5]
],
[
[5, 9, 2],
[6, 2, 4],
[8, 1, 7]
]
];
foreach ($threeDArray as &$arr) {
foreach ($arr as &$subArr) {
arsort($subArr);//对每个二维数组进行排序
}
unset($subArr);
}
print_r($threeDArray);
输出的结果如下:
Array
(
[0] => Array
(
[0] => Array
(
[1] => 4
[0] => 3
[2] => 1
)
[1] => Array
(
[2] => 5
[0] => 10
[1] => 3
)
[2] => Array
(
[1] => 8
[2] => 7
[0] => 5
)
)
[1] => Array
(
[0] => Array
(
[1] => 9
[0] => 5
[2] => 2
)
[1] => Array
(
[0] => 6
[2] => 4
[1] => 2
)
[2] => Array
(
[2] => 7
[0] => 8
[1] => 1
)
)
)
5. krsort()函数
krsort()函数是将数组按照键的降序排列。下面是krsort()函数的使用方法:
```php
$threeDArray = [
[
['a'=>1, 'b'=>4, 'c'=>3],
['a'=>10, 'b'=>3, 'c'=>5],
['a'=>7, 'b'=>8, 'c'=>5]
],
[
['a'=>5, 'b'=>9, 'c'=>2],
['a'=>6, 'b'=>2, 'c'=>4],
['a'=>8, 'b'=>1, 'c'=>7]
]
];
foreach ($threeDArray as &$arr) {
foreach ($arr as &$subArr) {
krsort($subArr);//对每个二维数组进行排序
}
unset($subArr);
}
print_r($threeDArray);
下一篇
图片格式php怎么办
https/SSL证书广告优选IDC>>
推荐主题模板更多>>
推荐文章