好的,前一个;
Array (
'home' => array('order' => 1),
'about' => array(),
'folio' => array('order' => 2),
'folio/web' => array('order' => 2),
'folio/print' => array('order' => 1)
'contact' => array('order' => 2)
)
并希望之后;
Array (
'home' => array('order' => 1),
'contact' => array('order' => 2),
'folio' => array('order' => 2),
'folio/print' => array('order' => 1),
'folio/web' => array('order' => 2),
'about' => array()
)
我知道,可怕(不要问!)
查看键中的斜杠如何表示子项,以及如何相应地嵌套顺序?没有订单的商品只是简单地转移到底部。
但是,具有相同顺序的多个“同一级别”项目如何仅按键排序?
答案 0 :(得分:1)
您是否看过http://www.php.net/manual/en/function.asort.php和http://www.php.net/manual/en/function.sort.php
同时在查看sort
时,请务必查看旗帜。
那个数组可能会导致很多问题,我建议你把它改成像
这样的东西'home' => array(
'meta' => array('order' => 1)
),
'folio' => array(
'meta' => array('order' => 2),
'children' => array(
'print' => array(
'meta' => array('order' => 1)
/*Other Children*/
),
'web' => array(
'meta' => array('order' => 2)
)
)
),
并尝试递归一些。
function show_menu(&$return,$array)
{
$return .= '<ul>';
foreach($array as $name => $inner)
{
$return .= '<li>' . $name
if(isset($inner['children']))
{
show_menu(&$return,$inner['children']);
}
$return .= '</li>';
}
$return .= '</ul>';
}
$menu = '';
show_menu(&$menu,$menu_array);
echo $menu;
应该为你创建一个很好的层次结构菜单,希望这有帮助。
答案 1 :(得分:1)
该死的,几乎值得获得一个bubblesort算法并完全跳过所有排序功能。 但是:如果你做一个循环:
foreach($array as $idx => $ar){
$array[$idx]['key'] = $idx;
}
...我认为没有理由用uasort()实现它,尽管是肮脏的工作......
function somesorter($a,$b){
//check 'keys' entry in $a & $b first for slash, act accordingly if clear
//check absence or 'order' entry in one or both
//compare order entry
}