数组 $files 见最后,我想按目录结构来生成目录树。
最终的结果应该是:
---------------------------------------------------------------------------
readme (目录)
utility(目录)
   utility\oldprg(目录)
      utility\oldprg\readme.txt (文件)
   utility\convert(目录)
   utility\oldprg\uchome(目录)
      utility\oldprg\uchome\space.php
      utility\oldprg\uchome\invite.php      
upload (目录)---------------------------------------------------------------------------
用遍历的方式,出来的结果不对,排序错乱。麻烦高手帮忙,写下方法。
Array
(
    [3851] => Array
        (
            [name] => readme
            [size] => 0
            [date] => 1346681588
            [pass] => 0
            [next_offset] => 8931535
            [is_dir] => 1
        )    [3850] => Array
        (
            [name] => utility
            [size] => 0
            [date] => 1346681588
            [pass] => 0
            [next_offset] => 8931497
            [is_dir] => 1
        )    [3849] => Array
        (
            [name] => upload
            [size] => 0
            [date] => 1346681588
            [pass] => 0
            [next_offset] => 8931458
            [is_dir] => 1
        )    [3848] => Array
        (
            [name] => utility\oldprg
            [size] => 0
            [date] => 1346681588
            [pass] => 0
            [next_offset] => 8931420
            [is_dir] => 1
        )    [3847] => Array
        (
            [name] => utility\convert
            [size] => 0
            [date] => 1346681588
            [pass] => 0
            [next_offset] => 8931374
            [is_dir] => 1
        )
        
    [3836] => Array
        (
            [name] => utility\oldprg\uchome
            [size] => 0
            [date] => 1346681588
            [pass] => 0
            [next_offset] => 8930871
            [is_dir] => 1
        )
        
    [3550] => Array
      (
          [name] => utility\oldprg\readme.txt
          [size] => 760
          [date] => 1346681588
          [pass] => 0
          [next_offset] => 8863967
      )
      
    [3553] => Array
        (
            [name] => utility\oldprg\uchome\space.php
            [size] => 254
            [date] => 1346681588
            [pass] => 0
            [next_offset] => 8865230
        )    [3552] => Array
        (
            [name] => utility\oldprg\uchome\invite.php
            [size] => 254
            [date] => 1346681588
            [pass] => 0
            [next_offset] => 8864943
        )        
)

解决方案 »

  1.   

    搞不清楚你想干什么……
    什么不对?
    $obj=new RecursiveIteratorIterator(new RecursiveDirectoryIterator(根目录)[, SELF_FIRST]);foreache 一下 $obj做你要做的事
    相关文档参数手册  PHP标准库 (SPL)/■RecursiveDirectoryIterator 和 ■SplFileInfo 关于参数 SELF_FIRST
    省略时只列出文件,包含子目录
    不省略的就和目录一起列出来(同级目录优先于文件)
    如果用CHILD_FIRST 代替则顺序变为同级文件优先于目录
      

  2.   

    试过SPL大部分用法,没有什么速度优势。遍历目录就是其中之一
      

  3.   

    學習了,看來我對php還是缺少瞭解
      

  4.   


    function rf( $dir )
    {
    $dirs = opendir($dir);
    $results = array();
    while( false !== ( $dname = readdir($dirs) ) )
    {
    if( $dname != '.' && $dname != '..' )
    {
    $results['name'] = $dir;
    if( is_file($dir . '/' . $dname ) )
    {
    $results[] = $dir . '/' . $dname ;
    }
    else if( is_dir( $dir . '/' . $dname ) )
    {
    $results[] = rf($dir . '/' . $dname  );
    }
    }
    }
    return $results;
    }
    print_r(rf("D:\program\wamp\www\o"));
      

  5.   

    一般这么多分,这么长的帖子,我都是不看到的。因为大神基本都会被召唤来。
    好不容易看完这么长的帖子,不过我还是没搞懂。
     utility\oldprg(目录)
     utility\oldprg\readme.txt (文件)
     utility\convert(目录)
    这个convert目录为什么在后面?不是按照字母排序的?
    好吧,这次我又打酱油了。