电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > DOCX文档下载
分享到微信 分享到微博 分享到QQ空间

PHP实现无限极分类的两种方式

  • 资源ID:61964050       资源大小:15.30KB        全文页数:15页
  • 资源格式: DOCX        下载积分:0金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要0金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

PHP实现无限极分类的两种方式

PHP实现无限极分类的两种方式,递归和引用面试的时候被问到无限极分类的设计和实现,比较常见的做法是在建表的时候,增加一个PID字段用来区别自己所属的分类$array = array(array('id' => 1, 'pid' => 0, 'name' => '河北省'),array('id' => 2, 'pid' => 0, 'name' => '北京市'),array('id' => 3, 'pid' => 1, 'name' => '邯郸市'),array('id' => 4, 'pid' => 2, 'name' => '朝阳区'),array('id' => 5, 'pid' => 2, 'name' => '通州区'),array('id' => 6, 'pid' => 4, 'name' => '望京'),array('id' => 7, 'pid' => 4, 'name' => '酒仙桥'),array('id' => 8, 'pid' => 3, 'name' => '永年区'),array('id' => 9, 'pid' => 1, 'name' => '武安市'),);1234567891011数据在数据库中存储大概是这个样子,怎么实现无限极递归呢,有两种常用的做法,递归和引用算法递归算法 /* * 递归实现无限极分类 * param $array 分类数据 * param $pid 父ID * param $level 分类级别 * return $list 分好类的数组 直接遍历即可 $level可以用来遍历缩进 */ function getTree($array, $pid =0, $level = 0) /声明静态数组,避免递归调用时,多次声明导致数组覆盖 static $list = ; foreach ($array as $key => $value) /第一次遍历,找到父节点为根节点的节点 也就是pid=0的节点 if ($value'pid' = $pid) /父节点为根节点的节点,级别为0,也就是第一级 $value'level' = $level; /把数组放到list中 $list = $value; /把这个节点从数组中移除,减少后续递归消耗 unset($array$key); /开始递归,查找父ID为该节点ID的节点,级别则为原级别+1 getTree($array, $value'id', $level+1); return $list; /* * 获得递归完的数据,遍历生成分类 */ $array = getTree($array); foreach($array) as $value echo str_repeat('-', $value'level'), $value'name'.'<br />' /输出结果 无限极分类实现ok河北省-邯郸市-永年区-武安市北京市-朝阳区-望京-酒仙桥-通州区123456789101112131415161718192021222324252627282930313233343536373839404142434445464748引用算法function generateTree($array) /第一步 构造数据 $items = array(); foreach($array as $value) $items$value'id' = $value; /第二部 遍历数据 生成树状结构 $tree = array(); foreach($items as $key => $value) if(isset($items$item'pid') $items$item'pid''son' = &$items$key; else $tree = &$items$key; return $tree;/经过第一步 数据变成了这样乐淘棋牌http:/www.letaoqpyx.comArray( 1 => Array ( id => 1 pid => 0 name => 河北省 children => Array ( ) ) 2 => Array ( id => 2 pid => 0 name => 北京市 children => Array ( ) ) 3 => Array ( id => 3 pid => 1 name => 邯郸市 children => Array ( ) ) 4 => Array ( id => 4 pid => 2 name => 朝阳区 children => Array ( ) ) 5 => Array ( id => 5 pid => 2 name => 通州区 children => Array ( ) ) 6 => Array ( id => 6 pid => 4 name => 望京 children => Array ( ) ) 7 => Array ( id => 7 pid => 4 name => 酒仙桥 children => Array ( ) ) 8 => Array ( id => 8 pid => 3 name => 永年区 children => Array ( ) ) 9 => Array ( id => 9 pid => 1 name => 武安市 children => Array ( ) )/第一步很容易就能看懂,就是构造数据,现在咱们仔细说一下第二步 $tree = array(); /遍历构造的数据 foreach($items as $key => $value) /如果pid这个节点存在 if(isset($items$value'pid') /把当前的$value放到pid节点的son中 注意 这里传递的是引用 为什么呢? $items$value'pid''son' = &$items$key; else $tree = &$items$key; /这个方法的核心在于引用,php变量默认的传值方式是按指传递/也就是说 假如说 遍历顺序是 河北省 邯郸市 当遍历到河北省时 会把河北省放到tree中 遍历到邯郸市时 会把邯郸市放到河北省的子节点数组中 但是! 这会儿的tree数组中 河北省已经放进去了 根据php变量按值传递的规则 你并没有更改tree数组中的河北省的数据 所以这里用到了引用传递/当你对河北省做更改时,tree数组中的河北省也一并做了更改 下面我们做个实验 我们把引用传递去掉,看一下结果移动电玩城http:/www.44226.net/使用普通传值输出结果 Array( 0 => Array ( id => 1 pid => 0 name => 河北省 ) 1 => Array ( id => 2 pid => 0 name => 北京市 )/可以看到 只有河北省和北京市输出

注意事项

本文(PHP实现无限极分类的两种方式)为本站会员(m****)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。

分享当前资源【PHP实现无限极分类的两种方式】到朋友圈,您即可以免费下载此资源!
微信扫一扫分享到朋友圈
二维码
操作提示:任选上面一个二维码,打开微信,点击“发现”使用“扫一扫”,即可将选择的网页分享到朋友圈
您可能感兴趣的------------------------------------------------------------------------------------------------------



关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.