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);