php实例分享之二维数组排序

接下来我将为您详细讲解“php实例分享之二维数组排序”的完整攻略。

接下来我将为您详细讲解“php实例分享之二维数组排序”的完整攻略。

一、什么是二维数组排序?

在php中,我们经常需要对数组进行排序,而如果数组是一个多维数组时,我们就需要对其进行二维数组排序。简单来说,二维数组排序就是对一个数组中的子数组进行排序,使得整个数组具有一定的顺序。

二、二维数组排序的方法详解

php中有三种主要的排序方法来对二维数组进行排序,分别是:按值排序、按键排序、按自定义规则排序。

1. 按值排序

按值排序是按照数组元素的值进行排序。php中提供了两个内置函数:asort()arsort(),分别用于进行升序和降序排序。

示例:

<?php
$grades = [
    ['name' => 'John', 'grade' => 90],
    ['name' => 'Mike', 'grade' => 80],
    ['name' => 'Kate', 'grade' => 100]
];
//按成绩升序排序
asort($grades);
print_r($grades);
//按成绩降序排序
arsort($grades);
print_r($grades);
?>

运行结果:

Array
(
    [1] => Array
        (
            [name] => Mike
            [grade] => 80
        )

    [0] => Array
        (
            [name] => John
            [grade] => 90
        )

    [2] => Array
        (
            [name] => Kate
            [grade] => 100
        )

)
Array
(
    [2] => Array
        (
            [name] => Kate
            [grade] => 100
        )

    [0] => Array
        (
            [name] => John
            [grade] => 90
        )

    [1] => Array
        (
            [name] => Mike
            [grade] => 80
        )

)

可以看到,我们先按成绩升序排序,然后再按成绩降序排序。

2. 按键排序

按键排序是按照数组元素的键进行排序。php中提供了两个内置函数:ksort()krsort(),分别用于进行升序和降序排序。

示例:

<?php
$grades = [
    'John' => ['grade' => 90],
    'Mike' => ['grade' => 80],
    'Kate' => ['grade' => 100]
];
//按名字升序排序
ksort($grades);
print_r($grades);
//按名字降序排序
krsort($grades);
print_r($grades);
?>

运行结果:

Array
(
    [John] => Array
        (
            [grade] => 90
        )

    [Kate] => Array
        (
            [grade] => 100
        )

    [Mike] => Array
        (
            [grade] => 80
        )

)
Array
(
    [Mike] => Array
        (
            [grade] => 80
        )

    [Kate] => Array
        (
            [grade] => 100
        )

    [John] => Array
        (
            [grade] => 90
        )

)

可以看到,我们先按名字升序排序,然后再按名字降序排序。

3. 按自定义规则排序

按自定义规则排序是按照一定的自定义规则对数组元素进行排序。php中提供了一个内置函数:usort(),允许我们自己定义排序规则。

示例:

<?php
$grades = [
    ['name' => 'John', 'grade' => 90],
    ['name' => 'Mike', 'grade' => 80],
    ['name' => 'Kate', 'grade' => 100]
];
//按成绩升序排序
usort($grades, function($a, $b) {
    return $a['grade'] - $b['grade'];
});
print_r($grades);
//按成绩降序排序
usort($grades, function($a, $b) {
    return $b['grade'] - $a['grade'];
});
print_r($grades);
?>

运行结果:

Array
(
    [0] => Array
        (
            [name] => Mike
            [grade] => 80
        )

    [1] => Array
        (
            [name] => John
            [grade] => 90
        )

    [2] => Array
        (
            [name] => Kate
            [grade] => 100
        )

)
Array
(
    [2] => Array
        (
            [name] => Kate
            [grade] => 100
        )

    [1] => Array
        (
            [name] => John
            [grade] => 90
        )

    [0] => Array
        (
            [name] => Mike
            [grade] => 80
        )

)

可以看到,我们先按成绩升序排序,然后再按成绩降序排序。

三、总结

至此,我们已经详细讲解了php二维数组排序的各种方法及具体使用。希望对各位php爱好者有所帮助。

本文标题为:php实例分享之二维数组排序

基础教程推荐