数组 $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
)
)
最终的结果应该是:
---------------------------------------------------------------------------
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
)
)
什么不对?
$obj=new RecursiveIteratorIterator(new RecursiveDirectoryIterator(根目录)[, SELF_FIRST]);foreache 一下 $obj做你要做的事
相关文档参数手册 PHP标准库 (SPL)/■RecursiveDirectoryIterator 和 ■SplFileInfo 关于参数 SELF_FIRST
省略时只列出文件,包含子目录
不省略的就和目录一起列出来(同级目录优先于文件)
如果用CHILD_FIRST 代替则顺序变为同级文件优先于目录
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"));
好不容易看完这么长的帖子,不过我还是没搞懂。
utility\oldprg(目录)
utility\oldprg\readme.txt (文件)
utility\convert(目录)
这个convert目录为什么在后面?不是按照字母排序的?
好吧,这次我又打酱油了。