PHP递归

<?php
/**
 * Mr.xml
 * 处理无限级分类
 */
class Category{
   /**
    * [递归一维数组]
    * @param  [type] $cate  [传递一个数组$cate]
    * @param  string $html  [标示符]
    * @param  [type] $pid   [所属哪个类]
    * @param  [type] $level [等级]
    * @return [type]        [把数组返回出去]
    */
   static public function unlimitedForLevel($cate, $html = '--', $pid = 0, $level = 0, $str = '♩——'){
      $arr = array();
      foreach ($cate as $v) {
         if($v['pid'] == $pid){
            $v['level'] = $level+1;
            $v['html']  = str_repeat($html, $level);
            if( $level != 0){
              $v['str'] = $str;
            }
            $arr[]      = $v;
            $arr        = array_merge($arr, self::unlimitedForLevel($cate, $html, $v['id'], $level+1));
         }
      }
      return $arr;
   }

   /*递归多维数组*/
   static public function unlimitedForLayer($cate, $name = 'child', $pid = 0)
   {
      $arr = array();
      foreach($cate as $v)
      {
         if($v['pid'] == $pid)
         {
            $v[$name] = self::unlimitedForLayer($cate, $name, $v['id']);
            $arr[] = $v;
         }
      }
      return $arr;      
   }
   
   /*传递一个子分类ID返回所有父级分类*/
   static public function getParents($cate, $id)
   {
      $arr = array();
      foreach($cate as $v)
      {
         if($v['id'] == $id)
         {
            $arr[] =$v;
            $arr = array_merge(self::getParents($cate, $v['pid']), $arr);//组合数组
         }
      }
      return $arr;
   }  
   /*传递一个父级分类ID求出所有子分类*/
   static public function getChilds($cate, $pid = 0)
   {
      $arr = array();
      foreach($cate as $v)
      {
         if($v['pid'] == $pid)
         {
            $arr[] = $v['id'];//返回ID如要返回所有只需$V
            $arr = array_merge($arr, self::getChilds($cate, $v['id']));
         }
      }
      return $arr;
   }  
}
?>

  

转载于:https://www.cnblogs.com/LoveProgram/p/4350902.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值