// 递归的方式实现
function my_dir( $dir ){ if ( !is_dir($dir) ) { return 'not dir';die(); } $files = array(); $dir_list = scandir($dir); foreach( $dir_list as $file ) { if( $file!='.' && $file!='..' ) { if( is_dir( $dir.'/'.$file )) { $files[$file] = my_dir( $dir.'/'.$file ); } else { $files[] = $file; } } } return $files;};
// 队列方式实现
function my_dir_list( $dir )
{ if( !is_dir( $dir) ) { return 'not dir';die(); } $files = array(); $queue = array( $dir ); // $data = each( $queue ); while( $data = each( $queue) ) { $path = $data['value']; $handle = opendir( $path ); if( is_dir($path) && $handle ) { // $file = readdir( $handle ); while( $file = readdir( $handle) ) { if ( $file == '.' || $file == '..' ) { continue; } else { $real_path = $path.'/'.$file; $files[] = $real_path; if( is_dir($real_path) ) { $queue[] = $real_path; } } } } closedir($handle); } return $files;}