按列值对多维数组进行排序[重复]

问题描述 投票:0回答:3

我有一个像这样的数组

数组
(

[0] => 数组

        (
            [结果] => 数组
                (
                    [0] => 数组
                        (
                            [类型] => ABC
                            [id] => 123232
                            [名称] => 苹果

                        )

                    [1] => 数组
                        (
                            [类型] => 防御
                            [id] => 2323232
                            [名称] => 香蕉

                        )

                )


            [标题] => 酷
            [排名] => 2
        )

  [1] => 数组
        (
            [结果] => 数组
                (
                    [0] => 数组
                        (
                            [类型] => ZX
                            [id] => 3223
                            [姓名] => 丹尼

                        )

                    [1] => 数组
                        (
                            [类型] => QWER
                            [id] => 2323232
                            [名称] => 仙人掌

                        )

                )


            [标题] => 热门
            [排名] => 1
        )


[3]..
[4]..还有儿子

我想按排名排序,PHP中有没有快速排序方法可以做到这一点?

php arrays sorting multidimensional-array
3个回答
4
投票

您可以使用

usort()

下面的示例需要 >= PHP 5.3。如果您没有此版本,只需传递对回调的引用即可。

usort($array, function($a, $b) {
   return $a['rank'] - $b['rank'];
}

3
投票

您可以使用usort功能:

function cmp($a, $b) {
    return $a['rank'] - $b['rank'];
}

$arr = /* your array */

usort($arr, "cmp");

看看

要按降序排列排名(评论中提出的问题),您只需在比较函数中反转顺序即可:

function cmp($a, $b) {
    return $b['rank'] - $a['rank'];
           ^^           ^^
}

0
投票

对数组进行排序有多种方法,请参阅:http://php.net/manual/en/array.sorting.php

© www.soinside.com 2019 - 2024. All rights reserved.