PHP关联数组排序

标签 php arrays sorting multidimensional-array associative-array

我有一个如下所示的数组。 目前,它按 OwnerNickName 字段的字母顺序排序。 现在我想将包含 OwnerNickName 'My House' 的数组条目作为数组的第一个条目,并按 OwnerNickName 的字母顺序排序。 有什么想法吗?

Array
(
    [0318B69D-5DEB-11DF-9D7E-0026B9481364] => Array
        (
            [OwnerNickName] => andy
            [Rooms] => Array
                (
                    [0] => Array
                        (
                            [Label] => Living Room
                            [RoomKey] => FC795A73-695E-11DF-9D7E-0026B9481364
                        )

                )

        )

    [286C29DE-A9BE-102D-9C16-00163EEDFCFC] => Array
        (
            [OwnerNickName] => anton
            [Rooms] => Array
                (
                    [0] => Array
                        (
                            [Label] => KidsRoom
                            [RoomKey] => E79D7991-64DC-11DF-9D7E-0026B9481364
                        )

                    [1] => Array
                        (
                            [Label] => Basement
                            [RoomKey] => CC12C0C4-68AA-11DF-9D7E-0026B9481364
                        )

                    [2] => Array
                        (
                            [Label] => Family Room
                            [RoomKey] => 67A280D4-64D9-11DF-9D7E-0026B9481364
                        )

                )

        )

    [8BE18F84-AC22-102D-9C16-00163EEDFCFC] => Array
        (
            [OwnerNickName] => mike
            [Rooms] => Array
                (
                    [0] => Array
                        (
                            [Label] => Family Room
                            [RoomKey] => 1C6AFB39-6835-11DF-9D7E-0026B9481364
                        )

                )

        )

    [29B455DE-A9BC-102D-9C16-00163EEDFCFC] => Array
        (
            [OwnerNickName] => My House
            [Rooms] => Array
                (
                    [0] => Array
                        (
                            [Label] => Basement
                            [RoomKey] => 61ECFAB2-6376-11DF-9D7E-0026B9481364
                        )

                    [1] => Array
                        (
                            [Label] => Rec Room
                            [RoomKey] => 52B8B781-6376-11DF-9D7E-0026B9481364
                        )

                    [2] => Array
                        (
                            [Label] => Deck
                            [RoomKey] => FFEB4102-64DE-11DF-9D7E-0026B9481364
                        )

                    [3] => Array
                        (
                            [Label] => My Room2
                            [RoomKey] => 112473E4-64DF-11DF-9D7E-0026B9481364
                        )

                    [4] => Array
                        (
                            [Label] => Bar Room
                            [RoomKey] => F82C47A8-64DE-11DF-9D7E-0026B9481364
                        )

                )

        )

)

最佳答案

您可能想实现自己的排序功能,例如:

function cmp($a, $b)
{
    if ($a['OwnerNickName'] == $b['OwnerNickName']) {
        return 0;
    }
    if ($a['OwnerNickName'] == 'My House') {
        return -1;
    } else if ($b['OwnerNickName'] == 'My House') {
        return 1;
    }
    return ($a['OwnerNickName'] < $b['OwnerNickName']) ? -1 : 1;
}    
usort($array, 'cmp');

关于PHP关联数组排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2957587/

相关文章:

c++ - 2个动态数组初始化之间的区别

c - 将二维数组保存在指针数组中

php - Zend Framework 2 - 删除的表单元素导致验证失败

php - Laravel 的 AsgardCMS 无法在 Ubuntu 上正常运行

php - Docker:从 php 调用可执行文件不起作用

php - 更新实时网站的过程

php - 使用 Laravel 更新嵌套数组

c++ - 如何排序 vector <pair<string , pair<int , int>>>?

python - 在 Python 中按字母数字顺序对字典(包含在列表中)进行排序

scala - Spark 斯卡拉: GroupByKey and sort