目录树无限级分类

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


<?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 ); //调用目录显示函数

?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值