php 二维数组怎么排序
时间 : 2023-03-31 04:57:01声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

在 PHP 中,可以使用多种方式对二维数组进行排序。其中,基于键值对的排序和基于属性值的排序是比较常见的两种方式。

基于键值对的排序

基于键值对的排序是指根据数组中的键或值来对二维数组进行排序。这种方式通常使用 PHP 自带的排序函数实现,如sort()、rsort()、ksort()、krsort()等。

示例代码如下:

<?php

// 定义一个二维数组

$array = array(

array('name'=>'张三', 'age'=>'20', 'score'=>'80'),

array('name'=>'李四', 'age'=>'18', 'score'=>'85'),

array('name'=>'王五', 'age'=>'22', 'score'=>'70')

);

// 基于键值排序

array_multisort(array_column($array, 'score'), SORT_DESC, $array);

print_r($array);

?>

上述代码中,array_multisort() 函数接收两个参数:第一个参数为需要排序的数组,第二个参数为排序方式(默认为升序)。我们使用 array_column() 函数来获取二维数组中的某个列,再使用 array_multisort() 函数对该列进行倒序排序。

基于属性值的排序

基于属性值的排序是指根据二维数组中某个属性的值来对其进行排序。这种方式需要在自定义回调函数中实现,通常使用 usort() 函数来实现。

示例代码如下:

<?php

// 定义一个二维数组

$array = array(

array('name'=>'张三', 'age'=>'20', 'score'=>'80'),

array('name'=>'李四', 'age'=>'18', 'score'=>'85'),

array('name'=>'王五', 'age'=>'22', 'score'=>'70')

);

// 基于属性值排序

usort($array, function($a, $b) {

return $a['score'] < $b['score'];

});

print_r($array);

?>

上述代码中,我们使用了 usort() 函数来对二维数组进行排序。usort() 函数接收两个参数:第一个参数为需要排序的数组,第二个参数为自定义的回调函数。在回调函数中,通过比较两个数组中某个属性的大小来实现排序。

总结

以上就是在 PHP 中对二维数组进行排序的两种常见方式。基于键值对的排序比较简单,可以使用 PHP 自带的排序函数快速实现。而基于属性值的排序需要自定义回调函数,但可以更灵活地实现各种排序方法。

在PHP中,可以使用多个函数对二维数组进行排序。以下是一些常用的排序函数:

1. sort():按照升序对数组进行排序,单独对每个元素进行排序。

2. rsort():按照降序对数组进行排序,单独对每个元素进行排序。

3. asort():按照升序对数组进行排序,并保留索引关系。

4. arsort():按照降序对数组进行排序,并保留索引关系。

5. ksort():按照升序对数组的键进行排序。

6. krsort():按照降序对数组的键进行排序。

7. usort():使用用户自定义的比较函数对数组进行排序。

下面将演示如何使用这些函数来对二维数组进行排序:

```php

// 二维数组按照其中一个元素升序排序

$array = array(

array('name'=>'张三', 'age'=>18),

array('name'=>'李四', 'age'=>20),

array('name'=>'王五', 'age'=>15)

);

usort($array, function($a, $b){

return ($a['age'] - $b['age']);

});

print_r($array);

// 输出结果为:

// Array (

// [0] => Array ( [name] => 王五 [age] => 15 )

// [1] => Array ( [name] => 张三 [age] => 18 )

// [2] => Array ( [name] => 李四 [age] => 20 )

// )

// 二维数组按照其中一个元素降序排序

$array = array(

array('name'=>'张三', 'age'=>18),

array('name'=>'李四', 'age'=>20),

array('name'=>'王五', 'age'=>15)

);

usort($array, function($a, $b){

return ($b['age'] - $a['age']);

});

print_r($array);

// 输出结果为:

// Array (

// [0] => Array ( [name] => 李四 [age] => 20 )

// [1] => Array ( [name] => 张三 [age] => 18 )

// [2] => Array ( [name] => 王五 [age] => 15 )

// )

// 二维数组按照键排序

$array = array(

'b'=>array('name'=>'李四', 'age'=>20),

'a'=>array('name'=>'张三', 'age'=>18),

'c'=>array('name'=>'王五', 'age'=>15)

);

ksort($array);

print_r($array);

// 输出结果为:

// Array (

// [a] => Array ( [name] => 张三 [age] => 18 )

// [b] => Array ( [name] => 李四 [age] => 20 )

// [c] => Array ( [name] => 王五 [age] => 15 )

// )

上述示例代码中使用了usort()函数对二维数组按照其中一个元素进行排序,使用ksort()函数对二维数组按照键排序。其他函数的用法可以参照PHP官方文档。