目录树无限级分类

以下是一家公司给出的面试题,现在简单实现一下。主要用了迭代,没有过多注重性能


<?php

echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />";
  $directory = array(    //目录数组赋值
                '0' => array( ''  , '主目录' ),
'1' => array( '0' , '第一级目录1'),
'2' => array( '0' , '第一级目录2'),
                '3' => array( '0' , '第一级目录3'),
                '4' => array( ''  , '主目录2'),
'5' => array( '1' , '第二级目录1')
//'6' => array( '5' , '第三级目录1')
               );

/**
  显示目录函数
 
  $directory   目录数组
**/
function show_cate( $directory )
{
   //print_r( $directory );
   foreach( $directory as $key => $value )   //循环目录数组
   {
   if( $value[0] == '' )   //如果key值为空,表示为根目录
   {
    echo $value[1];   //打印出根目录
    echo "<br/>";    
    sub_cate( $directory ,$key , 1 );  //调用子分类函数
   }
    }
}

/**
  递归显示子分类
  $directory 目录数组
  $parent 父节点
  $level  层级数
**/
function sub_cate( $directory ,$parent , $level )
{
    foreach( $directory as $key => $value )  //循环目录数组
    {
   //print_r( $value );
           //echo $value[ 0 ].'sss';
   if( $value[0] == $parent && $value[0] !='' )  //如果数组下标为0的值等于父级ID值,且数组下标为0的值不能为空
   {
       echo str_repeat( '--' , $level).$value[1]."<br/>";   //填充前面的空间,并打印该分类的值
       sub_cate( $directory , $key , $level+1 );    //继续递归调用子分类
   }  
    }
}

show_cate( $directory );   //调用目录显示函数

?>

你可能感兴趣的:(PHP)