Php 如何根据“a”排列此数组;“家长”;指数

Php 如何根据“a”排列此数组;“家长”;指数,php,Php,有一个数组: Array ( [0] => Array ( [0] => Array ( [menu_id] => 131 [gmnu_code] => 5 [menu_lib] => global.menu.admin.profil

有一个
数组

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [menu_id] => 131
                    [gmnu_code] => 5
                    [menu_lib] => global.menu.admin.profil
                    [menu_image] => 
                    [menu_ordre] => 1
                    [menu_visible] => 1
                    [menu_deleted] => 
                    [menu_parent] => 1
                    [menu_controlleur] => AdminProfil
                    [menu_navigation] => profil.list.titre
                )

            [1] => Array
                (
                    [menu_id] => 184
                    [gmnu_code] => 5
                    [menu_lib] => global.menu.admin.users
                    [menu_image] => 
                    [menu_ordre] => 2
                    [menu_visible] => 1
                    [menu_deleted] => 
                    [menu_parent] => 1
                    [menu_controlleur] => AdminUsers
                    [menu_navigation] => users.list.titre
                )

            [2] => Array
                (
                    [menu_id] => 130
                    [gmnu_code] => 5
                    [menu_lib] => global.menu.param.societe
                    [menu_image] => 
                    [menu_ordre] => 3
                    [menu_visible] => 1
                    [menu_deleted] => 
                    [menu_parent] => 1
                    [menu_controlleur] => AdminSociete
                    [menu_navigation] => societe.ajout.modif.titre
                )

            [3] => Array
                (
                    [menu_id] => 132
                    [gmnu_code] => 
                    [menu_lib] => 
                    [menu_image] => 
                    [menu_ordre] => 
                    [menu_visible] => 
                    [menu_deleted] => 
                    [menu_parent] => 131
                    [menu_controlleur] => AdminProfil/ajouter
                    [menu_navigation] => profil.titre.ajout
                )

            [4] => Array
                (
                    [menu_id] => 133
                    [gmnu_code] => 
                    [menu_lib] => 
                    [menu_image] => 
                    [menu_ordre] => 
                    [menu_visible] => 
                    [menu_deleted] => 
                    [menu_parent] => 131
                    [menu_controlleur] => AdminProfil/modifier
                    [menu_navigation] => profil.titre.modif
                )

            [5] => Array
                (
                    [menu_id] => 134
                    [gmnu_code] => 
                    [menu_lib] => 
                    [menu_image] => 
                    [menu_ordre] => 
                    [menu_visible] => 
                    [menu_deleted] => 
                    [menu_parent] => 131
                    [menu_controlleur] => AdminProfil/attribuerMenu
                    [menu_navigation] => profil.menu.attribution
                )

            [6] => Array
                (
                    [menu_id] => 147
                    [gmnu_code] => 
                    [menu_lib] => 
                    [menu_image] => 
                    [menu_ordre] => 
                    [menu_visible] => 
                    [menu_deleted] => 
                    [menu_parent] => 131
                    [menu_controlleur] => AdminProfil/supprimer
                    [menu_navigation] => main.suppr.profil
                )

            [7] => Array
                (
                    [menu_id] => 185
                    [gmnu_code] => 
                    [menu_lib] => 
                    [menu_image] => 
                    [menu_ordre] => 
                    [menu_visible] => 
                    [menu_deleted] => 
                    [menu_parent] => 184
                    [menu_controlleur] => AdminUsers/ajouter
                    [menu_navigation] => utilisateur.titre.ajout
                )

            [8] => Array
                (
                    [menu_id] => 186
                    [gmnu_code] => 
                    [menu_lib] => 
                    [menu_image] => 
                    [menu_ordre] => 
                    [menu_visible] => 
                    [menu_deleted] => 
                    [menu_parent] => 184
                    [menu_controlleur] => AdminUsers/modifier
                    [menu_navigation] => utilisateur.titre.modif
                )

            [9] => Array
                (
                    [menu_id] => 187
                    [gmnu_code] => 
                    [menu_lib] => 
                    [menu_image] => 
                    [menu_ordre] => 
                    [menu_visible] => 
                    [menu_deleted] => 
                    [menu_parent] => 184
                    [menu_controlleur] => AdminUsers/reinitMdp
                    [menu_navigation] => utilisateur.titre.reinit.mdp
                )

            [10] => Array
                (
                    [menu_id] => 188
                    [gmnu_code] => 
                    [menu_lib] => 
                    [menu_image] => 
                    [menu_ordre] => 
                    [menu_visible] => 
                    [menu_deleted] => 
                    [menu_parent] => 184
                    [menu_controlleur] => AdminUsers/supprimer
                    [menu_navigation] => utilisateur.titre.suppr
                )

        )
      ...
}
在这个
数组中
在数据中有父元素的概念:“menu\u parent”键意味着一个
数组
是另一个
数组
的子元素;
数组
的“menu\u id”等于“menu\u parent”的值就是父数组

例如,在上面的示例中,具有“menu_id”的
阵列131是具有“menu_id”132、133、134和147的阵列的父阵列


我想重新排列
数组的排序
,这样一个特定“菜单id”的
数组
的所有子项都放在它后面。如何做到这一点?

为了避免歧义,假设整个数组具有以下模式:

array [
  subarray_0,
  subarray_1,
  ...
];
然后,您需要将每个
子数组的内容独立于其他子数组进行排序

如果是这样,您可以这样工作:

foreach ($array as &$subarray) {
  usort($subarray, function($a, $b) {
    switch (true) {
      case $a['menu_parent'] > $b['menu_parent']: return 1;
      case $a['menu_parent'] < $b['menu_parent']: return -1;
      default: return 0;
  }
}
foreach($array as&$subarray){
usort($subarray,function($a,$b){
开关(真){
案例$a['menu\u parent']>$b['menu\u parent']:返回1;
案例$a['menu\u parent']<$b['menu\u parent']:返回-1;
默认值:返回0;
}
}

为了避免歧义,假设整个数组具有以下模式:

array [
  subarray_0,
  subarray_1,
  ...
];
然后,您需要将每个
子数组的内容独立于其他子数组进行排序

如果是这样,您可以这样工作:

foreach ($array as &$subarray) {
  usort($subarray, function($a, $b) {
    switch (true) {
      case $a['menu_parent'] > $b['menu_parent']: return 1;
      case $a['menu_parent'] < $b['menu_parent']: return -1;
      default: return 0;
  }
}
foreach($array as&$subarray){
usort($subarray,function($a,$b){
开关(真){
案例$a['menu\u parent']>$b['menu\u parent']:返回1;
案例$a['menu\u parent']<$b['menu\u parent']:返回-1;
默认值:返回0;
}
}

您尝试过什么吗。发布您尝试过的内容到目前为止您尝试过什么吗。发布您尝试过的内容到目前为止您尝试过的内容