好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php无限级分类(带层深)算法 - php高级应用

php无限级分类(带层深)算法

一个利用数组来实现无限级分类php类程序,有需要的朋友可参考,这里就不多说什么了直接复制上代码.

php无限级分类(带层深)算法实例代码如下:

<?php  $cates  =  array (    array (     'cid'    => 1,     'cname'  =>  '新闻' ,     'pid'    => 0   ),      array (     'cid'    => 2,     'cname'  =>  '通知' ,     'pid'    => 0   ),      array (     'cid'    => 3,     'cname'  =>  '国内新闻' ,     'pid'    => 1   ),      array (     'cid'    => 4,     'cname'  =>  '国际新闻' ,     'pid'    => 1   ),      array (     'cid'    => 5,     'cname'  =>  '北京新闻' ,     'pid'    => 3   ),      array (     'cid'    => 6,     'cname'  =>  '上海新闻' ,     'pid'    => 3   ),      array (     'cid'    => 7,     'cname'  =>  '紧急通知' ,     'pid'    => 2   ),      array (     'cid'    => 8,     'cname'  =>  '一般通知' ,     'pid'    => 2   ),  );    /**    * 生成菜单    *    * @param array $data 原始数据    * @param integer $pid 当前分类的父id    * @return array 处理后数据    */   function  createMenuTree( $data  =  array (),  $pid  = 0)  {    if  ( empty empty ( $data ))   {     return   array ();   }      static   $level  = 0;      $returnArray  =  array ();      foreach  ( $data   as   $node )   {     if  ( $node [ 'pid' ] ==  $pid )    {      $returnArray [] =  array (       'cid'    =>  $node [ 'cid' ],       'cname'  =>  $node [ 'cname' ],       'level'  =>  $level      );        if  (hasChild( $node [ 'cid' ],  $data ))     {       $level ++;         $returnArray  =  array_merge ( $returnArray , createMenuTree( $data ,  $node [ 'cid' ]));         $level --;     }    }   }      return   $returnArray ;  }    /**    * 检查是否有子分类    *    * @param integer $cid 当前分类的id    * @param array $data 原始数据    * @return boolean 是否有子分类    */   function  hasChild( $cid ,  $data )  {    $hasChild  = false;      foreach  ( $data   as   $node )   {     if  ( $node [ 'pid' ] ==  $cid )    {      $hasChild  = true;      break ;    }   }      return   $hasChild ;  }    header( 'Content-Type: text/html; charset=utf-8' );    $result  = createMenuTree( $cates );  //开源代码phpfensi测试数据   foreach  ( $result   as   $row )  {    for  ( $i  = 0;  $i  <  $row [ 'level' ];  $i ++)   {     echo   "t" ;   }      echo   $row [ 'cname' ] .  "n" ;  }  ?> 

查看更多关于php无限级分类(带层深)算法 - php高级应用的详细内容...

  阅读:50次