PHP 目录嵌套练习

取得目录数据形成一定的结构

使用多维数组的嵌套,表示层级关系!
将目录关系存放到数组中.
例如:
array(
array('filename'=>'index.php','type'=>'file'),
array('filename'=>'applicttion','type'=>'dir','nested'=>array(
array('filename'=>'.htacces','type'='file'),
array('filename'=>'back','type'=>'dir','nested'=>array(
...
)
),
)
)
...
)


<?php
$path = "../shop2018";

$list = readDirsNested($path);

echo "<pre>";
print_r($list);

// foreach($list as $first_key=>$first) { 
// 	echo $first_key, $first['name'], '<br>';
// 	if ($first['type'] == 'file') continue;
// 	foreach($first['nested'] as $second_key => $second) {
// 		echo ' ', $first_key , 'nested' , $second_key, $second['name'], '<br>';
// 	}
// }

function  readDirsNested($path) {
	//存放所有目录内容
	$nested = array();
	//打开目录
	$path_handle = opendir($path);
	//循环读取
	while(false !== $file = readdir($path_handle)){
		//排除隐含目录 . 和  ..
		if( $file == '.' || $file == '..' )continue;

		//创建当前文件信息
		$fileinfo = array();
		$fileinfo['name'] = $file;
		//转成utf8,应对目录/文件名字中文乱码
		//$fileinfo['name'] = iconv('GB18030', 'UTF-8', $file);

		//判断是否是目录
		if( is_dir( $path . '/' . $file ) ){
			//是目录
			//$fileinfo['filename'] = $file; 
			$fileinfo['type'] = 'dir'; 
			$fun = __FUNCTION__;
			$fileinfo['nested'] = $fun($path.'/'.$file);
		}else{
			//是文件
			//$fileinfo['filename'] = $file; 
			$fileinfo['type'] = 'file'; 
		}
		$nested[] = $fileinfo;
	}
	closedir($path_handle);
	return $nested;
}
----------
结果
-----------
Array
(
    [0] => Array
        (
            [name] => application
            [type] => dir
            [nested] => Array
                (
                    [0] => Array
                        (
                            [name] => back
                            [type] => dir
                            [nested] => Array
                                (
                                )


                        )


                    [1] => Array
                        (
                            [name] => config


...
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值