PHP二维数组排序的3种方法和自定义函数分享

下面我将详细讲解“PHP二维数组排序的3种方法和自定义函数分享”的完整攻略。

下面我将详细讲解“PHP二维数组排序的3种方法和自定义函数分享”的完整攻略。

一、什么是PHP二维数组

PHP二维数组是指包含多个数组的数组,每个数组都具有相同的键名,但是具有不同的值。

例如:

$arr=array(
array("name"=>"Tom","age"=>18,"score"=>90),
array("name"=>"Jerry","age"=>19,"score"=>80),
array("name"=>"Mike","age"=>20,"score"=>85),
);

上面的例子就是一个PHP二维数组,其中每个数组都包含有"姓名","年龄"和"分数"三个键名。

二、PHP二维数组排序的3种方法

方法一:使用array_multisort()函数进行排序

使用array_multisort()函数可以对PHP二维数组进行排序,可以按照数组中任意一个键名进行排序,如下所示:

$arr=array(
array("name"=>"Tom","age"=>18,"score"=>90),
array("name"=>"Jerry","age"=>19,"score"=>80),
array("name"=>"Mike","age"=>20,"score"=>85),
);

//按照分数进行排序
array_multisort($arr,SORT_DESC,SORT_NUMERIC,array_column($arr,'score'));

print_r($arr);

上述代码中,我们使用了array_multisort()函数对数组进行排序,按照分数进行排序,并使用了print_r()函数输出数组结果。输出结果如下:

Array
(
    [0] => Array
        (
            [name] => Tom
            [age] => 18
            [score] => 90
        )

    [1] => Array
        (
            [name] => Mike
            [age] => 20
            [score] => 85
        )

    [2] => Array
        (
            [name] => Jerry
            [age] => 19
            [score] => 80
        )

)

方法二:使用usort()函数进行排序

使用usort()函数可以对PHP二维数组进行排序,可以自定义比较函数,按照自己的需要进行排序,如下所示:

$arr=array(
array("name"=>"Tom","age"=>18,"score"=>90),
array("name"=>"Jerry","age"=>19,"score"=>80),
array("name"=>"Mike","age"=>20,"score"=>85),
);

//按照年龄进行排序
function cmp($a,$b){
    if($a['age']==$b['age']) return 0;
    return ($a['age']<$b['age'])?-1:1;
}
usort($arr,"cmp");

print_r($arr);

上述代码中,我们使用了usort()函数对数组进行排序,按照年龄进行排序,并使用了print_r()函数输出数组结果。输出结果如下:

Array
(
    [0] => Array
        (
            [name] => Tom
            [age] => 18
            [score] => 90
        )

    [1] => Array
        (
            [name] => Jerry
            [age] => 19
            [score] => 80
        )

    [2] => Array
        (
            [name] => Mike
            [age] => 20
            [score] => 85
        )

)

方法三:使用ksort()函数进行排序

使用ksort()函数可以对PHP二维数组进行排序,可以按照数组键名进行排序,如下所示:

$arr=array(
array("name"=>"Tom","age"=>18,"score"=>90),
array("name"=>"Jerry","age"=>19,"score"=>80),
array("name"=>"Mike","age"=>20,"score"=>85),
);

//按照姓名进行排序
ksort($arr);

print_r($arr);

上述代码中,我们使用了ksort()函数对数组进行排序,按照姓名进行排序,并使用了print_r()函数输出数组结果。输出结果如下:

Array
(
    [0] => Array
        (
            [name] => Jerry
            [age] => 19
            [score] => 80
        )

    [1] => Array
        (
            [name] => Mike
            [age] => 20
            [score] => 85
        )

    [2] => Array
        (
            [name] => Tom
            [age] => 18
            [score] => 90
        )

)

三、自定义函数分享

下面是一个自定义的排序函数,可以按照任意一个键名进行排序:

$arr=array(
array("name"=>"Tom","age"=>18,"score"=>90),
array("name"=>"Jerry","age"=>19,"score"=>80),
array("name"=>"Mike","age"=>20,"score"=>85),
);

//按照年龄进行排序
function sortArr($arr,$keyname,$sortOrder='SORT_ASC'){
    $sort_columns=array();
    foreach($arr as $k=>$v){
        $sort_columns[$k]=$v[$keyname];
    }
    array_multisort($sort_columns,$sortOrder,$arr);
    return $arr;
}

print_r(sortArr($arr,'age','SORT_DESC'));

上述代码中,我们自定义了一个sortArr()函数,可以传入一个二维数组以及需要排序的键名和排序方式,由于使用了array_multisort()函数,所以可以对数组进行多重排序。

我们对该函数进行了测试,按照年龄进行降序排序,并使用了print_r()函数输出数组结果。输出结果如下:

Array
(
    [0] => Array
        (
            [name] => Mike
            [age] => 20
            [score] => 85
        )

    [1] => Array
        (
            [name] => Jerry
            [age] => 19
            [score] => 80
        )

    [2] => Array
        (
            [name] => Tom
            [age] => 18
            [score] => 90
        )

)

至此,PHP二维数组排序的3种方法和自定义函数分享的攻略已经讲解完毕,希望对你有所帮助。

本文标题为:PHP二维数组排序的3种方法和自定义函数分享

基础教程推荐