简体   繁体   English

如何在PHP中对数组进行排序?

[英]How do i sort an array of array in PHP?

Hi I have below strustrue 嗨,我有下面的strustrue

[1] => Array
    (
        [menuName] => Apps
        [menuUrl] => /Apps
        [Invisible_Mode] => 
        [subMenu] => Array
            (
                [0] => Array
                    (
                        [subMenuName] => Collaboration
                        [subMenuUrl] => /Apps/Collaboration
                        [subitemCount] => 5
                        [Invisible_Mode] => 
                    )

                [1] => Array
                    (
                        [subMenuName] => Sales
                        [subMenuUrl] => /Apps/Sales
                        [subitemCount] => 11
                        [Invisible_Mode] => 
                    )

                [2] => Array
                    (
                        [subMenuName] => Project Management
                        [subMenuUrl] => /Apps/Project-Management
                        [subitemCount] => 5
                        [Invisible_Mode] => 
                    )

                [3] => Array
                    (
                        [subMenuName] => Human Resources
                        [subMenuUrl] => /Apps/Human-Resources
                        [subitemCount] => 7
                        [Invisible_Mode] => 
                    )

                [4] => Array
                    (
                        [subMenuName] => Marketing
                        [subMenuUrl] => /Apps/Marketing
                        [subitemCount] => 8
                        [Invisible_Mode] => 
                    ) ) )

i need array like below (using the above array), 我需要像下面的数组(使用上面的数组),

[1] => Array
    (
        [menuName] => Apps
        [menuUrl] => /Apps
        [Invisible_Mode] => 
        [subMenu] => Array
            (
                [Collaboration] => Array
                    (
                        [subMenuName] => Collaboration
                        [subMenuUrl] => /Apps/Collaboration
                        [subitemCount] => 5
                        [Invisible_Mode] => 
                    )

                [Sales] => Array
                    (
                        [subMenuName] => Sales
                        [subMenuUrl] => /Apps/Sales
                        [subitemCount] => 11
                        [Invisible_Mode] => 
                    )

                [Project Management] => Array
                    (
                        [subMenuName] => Project Management
                        [subMenuUrl] => /Apps/Project-Management
                        [subitemCount] => 5
                        [Invisible_Mode] => 
                    )

                [Human Resources] => Array
                    (
                        [subMenuName] => Human Resources
                        [subMenuUrl] => /Apps/Human-Resources
                        [subitemCount] => 7
                        [Invisible_Mode] => 
                    )

                [Marketing] => Array
                    (
                        [subMenuName] => Marketing
                        [subMenuUrl] => /Apps/Marketing
                        [subitemCount] => 8
                        [Invisible_Mode] => 
                    ) ) )

How can i do this? 我怎样才能做到这一点?

Looks like you don't need sorting but reindexing. 看起来您不需要排序,但需要重新编制索引。 And specific one at that. 具体来说就是这样。

Try this code: 试试这个代码:

$original_array = array(
    // your array 
);

$new_array = array();
foreach ($original_array as $menu_item)
{
    if (!empty($menu_item['subMenu']))
    {
        $reindexed_sub_menu =  array();
        foreach ($menu_item['subMenu'] as $sub_menu_item)
        {
            $reindexed_sub_menu[$sub_menu_item['subMenuName']] = $sub_menu_item;
        }

        // if you need to sort submenu by new key enable next line
        // ksort($reindexed_sub_menu);

        $menu_item['subMenu'] = $reindexed_sub_menu;
    }

    $new_array[] = $menu_item;
}

// new array is in $new_array :)

I Found answer 我找到答案

foreach($menuCategories as $menuc1) {
                                    foreach($menuc1['subMenu'] as $mc1) {
                                        $key = $mc1['subMenuName'];
                                        $final[$key] = $mc1;
                                        ksort($final);
                                    }
                                    }

it's work 是工作

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM