php无限极分类非递归,30行内写个无限分类算法(非递归)

**算法不一定是首创,但一定是原创哈!

我自己给这个算法取个名字,叫“一致无限分类法”。。哈哈!**

86880faf44aea3d33d35c3843a4abe6f.png

奉上代码:(使用的thinkphp框架)

public function menu(){

$data = M('menu') -> select(); //获取数据

$data = $this -> index_to_key($data,'menu_id'); //把primary key转移到数组索引上去

foreach($data as &$one){

$one['children'] = $this -> search_children($one['menu_id'],$data); //查询子节点

}

$this -> assign('data',$data); //前端显示

$this -> display();

echo '

';

print_r($data);

}

//查询子节点并返回

function search_children($id,$data){

$children = array();

foreach($data as $one){

if($one['menu_pid'] == $id){

$children[] = $one['menu_id'];

}

}

return $children;

}

//将数据的键名提到数组索引上去

function index_to_key($data,$main_key){

$new_data = array();

foreach($data as $row){

$new_data[$row[$main_key]] = $row;

}

return $new_data;

}

前端代码:

  • {$v1.menu_name}
    • {$data[$v2]['menu_name']}
      • {$data[$v3]['menu_name']}
        • {$data[$v4]['menu_name']}

效果:

3ac26e3ccb260d007eafc8b57e324b76.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值