Home > Article > Backend Development > php array sorting
How to sort the field menu_order in the array below? ? ? ? ? ?
Array
(
<code>[menu] => Array ( [0] => Array ( [menu_name] => 首页 [login_menu_name] => [icon] => glyphicon glyphicon-home [menu_href] => /api/1ek2n5gsut/shop/ [login_menu_href] => /api/1ek2n5gsut/shop/ [bind_action_attr] => 0 [menu_order] => 4 ) [1] => Array ( [menu_name] => 我要分销 [login_menu_name] => 分销中心 [icon] => glyphicon glyphicon-indent-left [menu_href] => /api/1ek2n5gsut/distribute/join/ [login_menu_href] => /api/1ek2n5gsut/distribute/ [bind_action_attr] => 1 [menu_order] => 3 ) [2] => Array ( [menu_name] => 购物车 [login_menu_name] => [icon] => glyphicon glyphicon-shopping-cart [menu_href] => /api/1ek2n5gsut/shop/cart/ [login_menu_href] => /api/1ek2n5gsut/shop/cart/ [bind_action_attr] => 2 [menu_order] => 1 ) [3] => Array ( [menu_name] => 个人中心 [login_menu_name] => [icon] => glyphicon glyphicon-user [menu_href] => /api/1ek2n5gsut/shop/member/ [login_menu_href] => /api/1ek2n5gsut/shop/member/ [bind_action_attr] => 0 [menu_order] => 1 ) [4] => Array ( [menu_name] => 分类 [login_menu_name] => [icon] => glyphicon glyphicon-th-list [menu_href] => /api/1ek2n5gsut/shop/3//allcategory/ [login_menu_href] => /api/1ek2n5gsut/shop/3//allcategory/ [bind_action_attr] => 0 [menu_order] => ) ) [method] => </code>
)
How to sort the field menu_order in the array below? ? ? ? ? ?
Array
(
<code>[menu] => Array ( [0] => Array ( [menu_name] => 首页 [login_menu_name] => [icon] => glyphicon glyphicon-home [menu_href] => /api/1ek2n5gsut/shop/ [login_menu_href] => /api/1ek2n5gsut/shop/ [bind_action_attr] => 0 [menu_order] => 4 ) [1] => Array ( [menu_name] => 我要分销 [login_menu_name] => 分销中心 [icon] => glyphicon glyphicon-indent-left [menu_href] => /api/1ek2n5gsut/distribute/join/ [login_menu_href] => /api/1ek2n5gsut/distribute/ [bind_action_attr] => 1 [menu_order] => 3 ) [2] => Array ( [menu_name] => 购物车 [login_menu_name] => [icon] => glyphicon glyphicon-shopping-cart [menu_href] => /api/1ek2n5gsut/shop/cart/ [login_menu_href] => /api/1ek2n5gsut/shop/cart/ [bind_action_attr] => 2 [menu_order] => 1 ) [3] => Array ( [menu_name] => 个人中心 [login_menu_name] => [icon] => glyphicon glyphicon-user [menu_href] => /api/1ek2n5gsut/shop/member/ [login_menu_href] => /api/1ek2n5gsut/shop/member/ [bind_action_attr] => 0 [menu_order] => 1 ) [4] => Array ( [menu_name] => 分类 [login_menu_name] => [icon] => glyphicon glyphicon-th-list [menu_href] => /api/1ek2n5gsut/shop/3//allcategory/ [login_menu_href] => /api/1ek2n5gsut/shop/3//allcategory/ [bind_action_attr] => 0 [menu_order] => ) ) [method] => </code>
)
<code><?php foreach ($menu as $key => $row) { $menu_order[$key] = $row['menu_order']; } // 将数据根据menu_order升序排列 // 把 $menu 作为最后一个参数,以通用键排序 array_multisort($menu_order, SORT_ASC, $menu);</code>
Reference: http://php.net/manual/ja/function.array-multisort.php
Use custom sorting
<code>usort($menu, function($a, $b) { return $a['menu_order'] < $b['menu_order'] ? -1 : 1; });</code>
Customize sorting. Just find the values of the corresponding nodes and compare them.