为了账号安全,请及时绑定邮箱和手机立即绑定

PHP无限分类实现

标签:
PHP

以前实现无限分类都没好好研究过,今天突然来兴趣就随手写了一个递归的无限极分类,希望对大家有借鉴意义!

<?php
    /*模拟数据库查询出来的分类数据*/
    $data = array(
            array('id'=>1,'name'=>1,'fid'=>0),
            array('id'=>2,'name'=>2,'fid'=>0),
            array('id'=>3,'name'=>3,'fid'=>0),
            array('id'=>4,'name'=>4,'fid'=>1),
            array('id'=>5,'name'=>5,'fid'=>2),
            array('id'=>6,'name'=>6,'fid'=>3),
            array('id'=>7,'name'=>7,'fid'=>4),
            array('id'=>8,'name'=>8,'fid'=>9),
            array('id'=>9,'name'=>9,'fid'=>4)
        );
    /**
     * 无限分类递归函数
     * @param  array  $data 分类信息
     * @param  string  $fid  父类id
     * @param  integer $pad  页面显示的缩进大小
     * @return string       拼接好的菜单(可以根据具体需求做修改)
     */
    function menu(&$data, $fid, $pad=0) {
        if(count($data) < 1) {
            return;
        }
        //拼接字符串
        $str = '';
        foreach ($data as $key => $value) {
            if($value['fid'] == $fid) {
                $str .= str_repeat('&nbsp;&nbsp;&nbsp;', $pad);
                $str .= $value['name'].'<br />';
                unset($data[$key]);
                //递归
                $str .= menu($data,$value['id'],$pad+1);
            }
        }
        return $str;
    }
    echo menu($data,0);
/*结果
1
   4
      7
      9
         8
2
   5
3
   6
*/

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消