例子例子,那就来个实用的吧。
复制内容到剪贴板
代码:
<?php
/**
* ************************
* 数组如下
*/
$ary=array(0=>array('id'=>1,'name'=>'一级A','fid'=>0,'oid'=>1),
1=>array('id'=>2,'name'=>'二级A','fid'=>1,'oid'=>1),
2=>array('id'=>3,'name'=>'一级B','fid'=>0,'oid'=>2),
3=>array('id'=>4,'name'=>'一级C','fid'=>0,'oid'=>3),
3=>array('id'=>5,'name'=>'二级A','fid'=>2,'oid'=>1),
3=>array('id'=>6,'name'=>'二级B','fid'=>1,'oid'=>2));
/**
* ************************
* @param array $array
*/
function getMenuSort(&$array)
{
//对数组按照级别进行排序
$code="if(\$a['fid']==\$b['fid'])";
$code.="{";
$code.=" return 0;";
$code.="}";
$code.="return (\$a['fid']>\$b['fid'])?1:-1;";
uasort($array,create_function('$a, $b', $code));
$c=array();
$d=array();
foreach ($array as $v)
{
$v['cid']=array();
if($v['fid']==0) //对根菜单按照oid排序
{
$i = count($c);
$c[$i] = $v;
$d[$v[id]] =& $c[$i];
usort($c,create_function('$m, $n',"if(\$m['oid']==\$n['oid']){return 0;}return (\$m['oid']>\$n['oid'])?1:-1;"));
}
else //对其他菜单按照oid排序
{
$i = count($d[$v['fid']]['cid']);
$d[$v['fid']]['cid'][$i] = $v;
$d[$v['id']] =& $d[$v['fid']]['cid'][$i];
usort($d[$v['fid']]['cid'],create_function('$m, $n',"if(\$m['oid']==\$n['oid']){return 0;}return (\$m['oid']>\$n['oid'])?1:-1;"));
}
}
$array=$c;
}
getMenuSort($ary);
?>
[
本帖最后由 enze 于 2008-4-1 13:31 编辑 ]