PHP获取目标路径(图片目录)的文件目录的原生代码,写出来后发现还有很大的优化空间,但由于是练手的作品没再深入修改,但这几天都有同学问我这个问题,所以决定开通博客,并在此献丑,若有更优方法,也请各位不吝斧正!
闲话少说,代码如下:
<?php class files{ protected function refiles( $path ){ if ( file_exists ( $path )){ $ref = scandir( $path ,1); foreach ( $ref as $val ){ if ( $val == '.' || $val == '..' ){ continue ; } $arr [ $val ] = is_dir ( $path . $val )? 'folder' : 'img' ; } } else { $arr = false; } return $arr ; } protected function reall( $arr , $path ){ foreach ( $arr as $key => $val ){ if ( $val == 'folder' ){ $newpath = $path . $key . "/" ; $temps = $this ->refiles( $newpath ); if ( $temps ){ $newtemp = $this ->reall( $temps , $newpath ); $arr [ $key ] = $newtemp ; } else { $arr [ $key ] = 'null' ; } } } return $arr ; } /** * 函数名称:allfiles() * 函数作用:取得指定路径下的所有目录 * 参数说明:$path:指定的路径 * 返 回 值:$result 目录数组 or false */ public function allfiles( $path ){ $allfiles = $this -> refiles( $path ); if ( $allfiles ){ $newallfiles = $this -> reall( $allfiles , $path ); $allfiles = $newallfiles ; } return $allfiles ; } /** * 函数名称:Dloop() * 函数作用:双层循环取得结构树 * 参数说明:$path:指定的路径 * 返 回 值:$result 目录数组 or false */ public function Dloop( $arr , $path , $space =0, $spaces =0){ foreach ( $arr as $key => $val ){ if ( is_array ( $val )){ $spaces += 15; $newpath = $path . $key . "/" ; $str .= '<tr><td class="content_td"><div php plain">. $space . 'px;"></div>' . $key . '</td><td class="content_td">' . $kb . '</td><td class="content_td"> </td></tr>' ; $str .= $this -> Dloop( $val , $newpath , $spaces , $spaces ); } else { //$str .= '这里写入树'; if ( stripos ( $key , '.jpg' )|| stripos ( $key , '.jpeg' )){ $fn = '<div php plain">. $space . 'px;"></div>' . $key ; } elseif ( stripos ( $key , '.gif' )){ $fn = '<div php plain">. $space . 'px;"></div>' . $key ; } elseif ( stripos ( $key , '.png' )){ $fn = '<div php plain">. $space . 'px;"></div>' . $key ; } else { $fn = '<div php plain">. $space . 'px;"></div>' . $key ; } $kb = round ( filesize ( $path . $key )/1024). "k" ; $str .= '<tr><td class="content_td">' . $fn . '</td><td class="content_td">' . $kb . '</td><td class="content_td"> </td></tr>' ; } } return $str ; } } ?> <!-- 网页测试部分 <table width= "100%" border= "0" cellpadding= "0" cellspacing= "0" class = "content_tab" > </?php include ( "../../include/files.php" ); $files = new files; $path = '../../images/' ; $newallf = $files -> allfiles( $path ); if ( $newallf ){ $str = $files -> Dloop( $newallf , $path ); ?> <tr> <td width= "60%" class = "content_td" >目录及图片</td> <td width= "20%" class = "content_td" >文件大小</td> <td width= "20%" class = "content_td" >管理操作</td> </tr> </?php echo $str ; } else { echo '<tr align="center"><td class="content_td">暂无数据</td></tr>' ;} ?> </table> --> |