asp无限分级,无限分级(PHP版)

如果您有疑问或建议,请进入技术讨论区交流 >>>
<?PHP 
 /** 
  * 把二维表分解成多级数组 
  * (可用于无线分级菜单,无限级留言) 
  * @author Lonely (从以前BLOG转过来的)
  */ 
 class unlimitClass { 
     private static $proarr=array(); 
     private static $valuefield='value'; 
     private static $parentidfield='parentid'; 
     private static $subidfield='subid'; 
     /** 
      * 设置父字段 
      * @param string $parentid 
      */ 
     public static function setParentIdField($parentid){ 
         self::$parentidfield=$parentid; 
     } 
     /** 
      * 设置子字段 
      * @param string $subid 
      */ 
     public static function setSubIdField($subid){ 
         self::$subidfield=$subid; 
     } 
     /** 
      * 设置值字段 
      * @param string $value 
      */ 
     public static function setValueField($value){ 
         self::$valuefield=$value; 
     } 
     /** 
      * 处理分级数组并返回 
      * @param array $array 
      */ 
     public static function toSub(array $array){ 
         if(is_array($array)){ 
             foreach($array as $row){ 
                 self::$proarr [$row [self::$subidfield]] = $row; 
                 self::$proarr [$row [self::$parentidfield]] ['sub'] [$row [self::$subidfield]] = $row; 
             } 
             return self::search_sub(self::$proarr,0); 
         }else   
             return array(); 
     } 
     /** 
      * 关键算法函数 
      * @param array $array 
      * @param unknown_type $key 
      */ 
     private static function search_sub(array $array,$key){ 
         $return = array (); 
         $subs = isset ( $array [$key] ['sub'] ) ? $array [$key] ['sub'] : array (); 
         foreach ( $subs as $k => $v ) { 
             $return [$k] = array ('sub' => self::search_sub ( $array, $k ), 'value' => $v [self::$valuefield] ); 
         } 
         return $return; 
     } 
 } 
 $temp=array ( 
   0 =>   
   array ( 
     'a' => '0', 
     'b' => '1', 
     'c' => 'a1', 
   ), 
   1 =>   
   array ( 
     'a' => '0', 
     'b' => '2', 
     'c' => 'a2', 
   ), 
   2 =>   
   array ( 
     'a' => '1', 
     'b' => '3', 
     'c' => 'a3', 
   ), 
   3 =>   
   array ( 
     'a' => '1', 
     'b' => '4', 
     'c' => 'a4', 
   ), 
   4 =>   
   array ( 
     'a' => '3', 
     'b' => '5', 
     'c' => 'a5', 
   ), 
   5 =>   
   array ( 
     'a' => '3', 
     'b' => '6', 
     'c' => 'a6', 
   ), 
   6 =>   
   array ( 
     'a' => '5', 
     'b' => '7', 
     'c' => 'a7', 
   ), 
   7 =>   
   array ( 
     'a' => '5', 
     'b' => '8', 
     'c' => 'a8', 
   ), 
   8 =>   
   array ( 
     'a' => '5', 
     'b' => '9', 
     'c' => 'a9', 
   ), 
   9 =>   
   array ( 
     'a' => '6', 
     'b' => '10', 
     'c' => 'a10', 
   ), 
   10 =>   
   array ( 
     'a' => '6', 
     'b' => '11', 
     'c' => 'a11', 
   ), 
   11 =>   
   array ( 
     'a' => '4', 
     'b' => '12', 
     'c' => 'a12', 
   ), 
   12 =>   
   array ( 
     'a' => '4', 
     'b' => '13', 
     'c' => 'a13', 
   ), 
   13 =>   
   array ( 
     'a' => '12', 
     'b' => '14', 
     'c' => 'a14', 
   ), 
   14 =>   
   array ( 
     'a' => '12', 
     'b' => '15', 
     'c' => 'a15', 
   ), 
   15 =>   
   array ( 
     'a' => '12', 
     'b' => '16', 
     'c' => 'a16', 
   ), 
   16 =>   
   array ( 
     'a' => '13', 
     'b' => '17', 
     'c' => 'a17', 
   ), 
   17 =>   
   array ( 
     'a' => '13', 
     'b' => '18', 
     'c' => 'a18', 
   ), 
   18 =>   
   array ( 
     'a' => '2', 
     'b' => '19', 
     'c' => 'a19', 
   ), 
   19 =>   
   array ( 
     'a' => '2', 
     'b' => '20', 
     'c' => 'a20', 
   ), 
   20 =>   
   array ( 
     'a' => '2', 
     'b' => '21', 
     'c' => 'a21', 
   ), 
   21 =>   
   array ( 
     'a' => '19', 
     'b' => '22', 
     'c' => 'a22', 
   ), 
   22 =>   
   array ( 
     'a' => '19', 
     'b' => '23', 
     'c' => 'a23', 
   ), 
   23 =>   
   array ( 
     'a' => '19', 
     'b' => '24', 
     'c' => 'a24', 
   ), 
   24 =>   
   array ( 
     'a' => '20', 
     'b' => '25', 
     'c' => 'a25', 
   ), 
   25 =>   
   array ( 
     'a' => '20', 
     'b' => '26', 
     'c' => 'a26', 
   ), 
   26 =>   
   array ( 
     'a' => '20', 
     'b' => '27', 
     'c' => 'a27', 
   ), 
   27 =>   
   array ( 
     'a' => '20', 
     'b' => '28', 
     'c' => 'a28', 
   ), 
   28 =>   
   array ( 
     'a' => '21', 
     'b' => '29', 
     'c' => 'a29', 
   ), 
   29 =>   
   array ( 
     'a' => '21', 
     'b' => '30', 
     'c' => 'a30', 
   ), 
   30 =>   
   array ( 
     'a' => '21', 
     'b' => '31', 
     'c' => 'a31', 
   ), 
   31 =>   
   array ( 
     'a' => '21', 
     'b' => '32', 
     'c' => 'a32', 
   ), 
 ); 
 unlimitClass::setParentIdField('a'); 
 unlimitClass::setSubIdField('b'); 
 unlimitClass::setValueField('c'); 
 $subs=unlimitClass::toSub($temp); 
 var_export($subs);
Tags:  php无限级分类 php无限分类 权限分级php asp无限分级

延伸阅读

最新评论

发表评论