有一个array
:
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
)
)
...
}
在此array
中,数据中存在父级概念:键“menu_parent”表示array
是另一个array
的子级;其“menu_id”等于“menu_parent”值的array
是父级。
例如,在上面的示例中,具有“menu_id”131的array
是具有“menu_id”132,133,134和147的数组的父节点。
我想重新安排array
的排序,以便特定“menu_id”的array
的所有孩子都放在它之后。怎么做?
答案 0 :(得分:2)
为避免歧义,假设整个数组具有以下模式:
array [
subarray_0,
subarray_1,
...
];
那么您需要从其他内容中对每个subarray_N
的内容进行独立排序
如果是这样,你可以像这样工作:
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;
}
}