本帖最后由 javaphp_net 于 2011-05-06 15:57:27 编辑

解决方案 »

  1.   

    print("<pre>");
    print_r(scanfdir("f:"));
    function scanfdir($dir){
    $files = array();
    if(is_dir($dir)){
    if($handle = opendir($dir)){
    while(($file = (readdir($handle))) !== false){
    if($file != '.' && $file != '..'){
    if(is_dir($dir."/".$file)){
    $files[$file] = scanfdir($dir.'/'.$file);
    }else{
    $files[] = $dir.'/'.$file;
    }
    }
    }
    closedir($handle);
    return $files;
    }
    }
    }
      

  2.   

    for($i=2;$i<count($arr);$i++){中的count($arr)放到$arr=scandir($dizhi)后面
    $count = count($arr)
    for($i=2;$count;$i++){
    这样就避免了每次循环都count了
      

  3.   

    道理就是那个道理,碰到.和..就忽略,然后文件推入数组,目录递归,不过我较喜欢用glob,呵呵,定制性较强,比如你要搜所有的jpg文件,用glob就比你这个要方便一些.