tinkphp框架
/* 随便一个table,在这里我设置了table前缀ml_
* create table ml_menu(
menu_id smallint unsigned key auto_increment,
menu_name varchar(32) not null comment '菜单名称',
menu_tag smallint unsigned not null comment '父菜单',
menu_url varchar(52) comment '菜单链接',
menu_img varchar(52) comment '菜单图标',
menu_hidden tinyint(2) unsigned default 1 comment '隐藏/显示菜单'
); */
//==============================数组递归例子
//easyui中的树(Tree)的数据结构,用json_encode()改成js数组,即可使用
function getMenuList($menu=array(),$tag=0,$num=0){
$menuid=M("menu")->where("menu_tag={$tag}")->select();
//$class 记住这是树的第几层,没有太多用处,可省略$num
$class=$num;
$num++;
foreach($menuid as $k=>$v){
$menu[$k]['text']=$v['menu_name'];
$menu[$k]['id']=$v['menu_id'];
$menu[$k]['iconCls']=$v['menu_img'];
$menu[$k]['attributes']['url']=$v['menu_url'];
$menu[$k]['attributes']['tag']=$v['menu_tag'];
$menu[$k]['attributes']['num']=$class;
$menu[$k]['children']=getMenuList($menu[$k]['children'],$v['menu_id'],$num);
}
return $menu;
}
//==========================================字符串递归例子
//一般select结构
function getTypeByOption($tag=0,$num=0){
$newtype=M('menu')->where("menu_tag=$tag and menu_hidden!=0")->select();
$optionStr="";
//产生缩进字符串
$indentStr=str_repeat('—',$num);
$num++;
foreach($newtype as $v){
$optionStr.="<option value='{$v['menu_id']}'>{$indentStr}{$v['menu_name']} </option>";
$tag=$v['menu_id'];
$sonStr=getTypeByOption($tag,$num);
$optionStr.=$sonStr;
}
return $optionStr;
}
$option=getTypeByOption($tag=0);
//将$option传到html中
echo "<select name='menu'><option>请选择</option>{$option}</select>";