为了账号安全,请及时绑定邮箱和手机立即绑定

基于php中的字段对多维数组进行排序

基于php中的字段对多维数组进行排序

PHP
汪汪一只猫 2023-07-21 16:19:45
我有如下所示的多维数组,我想根据[name]php 中的字段进行排序。Array(    [chicago] => Array        (            [community_name] => Chicago, IL            [areas] => Array                (                    [0] => Array                        (                            [name] => Array                                (                                    [0] => HELLO WORLD.                                )                        )                    [1] => Array                        (                            [name] => Array                                (                                    [0] => Hello                                )                        )                    [2] => Array                        (                            [name] => Array                                (                                    [0] => Administration.                                )                        )                )        )    [chicago-and-surrounding-areas] => Array        (            [community_name] => Chicago (and surrounding areas), IL            [areas] => Array                (                    [0] => Array                        (                            [name] => Array                                (                                    [0] => Carry.                                )                        )                    [1] => Array                        (                            [name] => Array                                (                                    [0] => Bacteria.                                )                        )                   )        )问题陈述:我想知道我需要在上面的 php 代码中进行哪些更改,以便它根据name字段对数组进行排序。使用上面的 php 代码,它不会对任何内容进行排序。它只是按原样打印输入。
查看完整描述

1 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

根据您的示例,您实际上是在尝试areas对子数组进行排序,而不是对整个父数组进行排序。因此,您需要依次循环每个子数组并分别对它们进行排序。


$array = [

    'chicago' => [

        'community_name' => 'Chicago, IL',

        'areas' => [

            [

                'name' => ['HELLO WORLD.']

            ],

            [

                'name' => ['Hello'],

            ],

            [

                'name' => ['Administration.'],

            ],

        ],

    ],

    'chicago-and-surrounding-areas' => [

        'community_name' => 'Chicago (and surrounding areas), IL',

        'areas' => [

            [

                'name' => ['Carry.']

            ],

            [

                'name' => ['Bacteria.'],

            ],

        ],

    ],

    'cambridge-chicago' => [

        'community_name' => 'Cambridge (Chicago), IL',

        'areas' => [

            [

                'name' => ['Responsibility.']

            ],

            [

                'name' => ['Bacteria'],

            ],

        ],

    ],

];


foreach ($array as &$locality) {

    usort($locality['areas'], function ($a, $b) {

        return $a['name'][0] <=> $b['name'][0];

    });

}


var_dump($array);

工作示例


查看完整回答
反对 回复 2023-07-21
  • 1 回答
  • 0 关注
  • 97 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信