欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

活见鬼,为什么这个内置函数这样写不行

程序员文章站 2022-04-19 16:19:50
...
见鬼,为什么这个内置函数这样写不行?
PHP code
$path = 'E:/Zl/资料-1/资料库/3005  奥迪A6L新型C6原厂资料';
function get_filetree($path){
    $tree = array();
    foreach(glob($path."/{*.pdf,*.doc,*.ppt}", GLOB_BRACE) as $single){
        if(is_dir($single)){
            $tree = array_merge($tree,get_filetree($single));
        }
        else{
            $tree[] = $single;
        }
    }
    return $tree;
}
print_r(get_filetree($path));


把{*.pdf,*.doc,*.ppt} 换成 * 就可以显示所有文件了,目录有些文件....

------解决方案--------------------
这样写
PHP code
function get_filetree($path){
  $tree = array();
  foreach(glob($path."/*.{pdf,doc,ppt}", GLOB_BRACE) as $single) {
    if(is_file($single)) $tree[] = $single;
  }
  foreach(glob($path."/*", GLOB_ONLYDIR ) as $single) {
    $tree = array_merge($tree,get_filetree($single));
  }
  return $tree;
}

------解决方案--------------------
你#6的写法也是可以的,但用错了目标
if(glob($path."*/*.{pdf,doc,ppt}", GLOB_BRACE)){
应为
if(glob($single."{pdf,doc,ppt}", GLOB_BRACE)){
目的是判断 $single 的后缀是否符合要求

我#4的代码:
//取得所有符合条件的文件名
foreach(glob($path."/*.{pdf,doc,ppt}", GLOB_BRACE) as $single) {
if(is_file($single)) $tree[] = $single;
}
//遍历所有子目录
foreach(glob($path."/*", GLOB_ONLYDIR ) as $single) {
$tree = array_merge($tree,get_filetree($single));
}
活见鬼,为什么这个内置函数这样写不行

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频