Упорядочить многомерный массив по конкретному значению - PullRequest
0 голосов
/ 09 октября 2018

У меня есть массив, подобный следующему, и я должен упорядочить как основной массив, так и вложенный массив на row_order

$all_menu_items = array_merge($main_menu, $sub_menu);

        $parent_items = array();
        $sub_items = array();
        foreach ($all_menu_items as $m1) {
            if ($m1['menu_parent'] == 0) {
                $parent_items[$m1['menu_id']] = $m1;
            }
        }

//        GROUP SUB MENU ITEMS BY PARENT MENU ITEM
        foreach ($all_menu_items as $m2) {
            if ($m2['menu_parent'] != 0) {
                $sub_items[$m2['menu_parent']][$m2['menu_id']] = $m2;
            }
        }

        foreach ($parent_items as $kp1 => $p1) {
            if (!empty($sub_items[$p1['menu_id']])) {
                $parent_items[$kp1]['sub_items'] = $sub_items[$p1['menu_id']];
            }
        }

Вот выход из $parent_items

[23] => Array
        (
            [menu_title] => Professional Review
            [menu_id] => 23
            [row_order] => 5
            [sub_items] => Array
                (
                    [28] => Array
                        (
                            [menu_title] => CPD Course Log
                            [menu_id] => 28
                            [menu_parent] => 23
                            [menu_level] => 2
                            [menu_icon] => fa-circle-o
                            [menu_path] => 404
                            [permission_id] => 725
                            [row_order] => 9
                        )

                    [31] => Array
                        (
                            [menu_title] => A Paper
                            [menu_id] => 31
                            [menu_parent] => 23
                            [menu_level] => 2
                            [menu_icon] => fa-circle-o
                            [menu_path] => pr-a-papers
                            [permission_id] => 720
                            [row_order] => 4
                        )

и я попробовал это и не могу сделать это, пожалуйста, помогите

usort($myArray, function($a, $b) {
    return $a['row_order'] <=> $b['row_order'];
});

1 Ответ

0 голосов
/ 17 октября 2018
usort($myArray, function($a, $b) {
    return $a['row_order'] <=> $b['row_order'];
});

Это должно применяться после array_merge.перед применением foreach к массиву

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...