当前位置:  开发笔记 > 编程语言 > 正文

如何摆脱.和..同时扫描在PHP中创建数组的文件夹?

如何解决《如何摆脱.和..同时扫描在PHP中创建数组的文件夹?》经验,为你挑选了1个好方法。



1> phihag..:

您在代码中混淆了fnmatch和正则表达式.要获取除特殊文件和目录之外的所有文件和目录,请使用:

$dir_array = array_diff($dir_array, array(".", ".."));

或者,如果你仍然迭代数组,你可以像这样测试每个元素:

foreach ($dir_array as $name) {
    if (($name != "..") && ($name != ".")) {
        // Do stuff on all files and directories except . ..
        if (is_dir($name)) {
            // Do stuff on directories only
        }
    }
}

在php <5.3中,您也可以专门使用回调函数:

$dir_array = array_filter($dir_array,
  create_function('$n', 'return $n != "." && $n != ".." && is_dir($n);'));

(有关更详细的版本,请参阅Allain Lalonde的答案)

从php 5.3开始,这可以写得更好:

$dir_array = array_filter($dir_array,
  function($n) {return $n != "." && $n != ".." && is_dir($n);});

最后,结合array_filter和这个答案的第一行代码会产生一个(微不足道)较慢但可能更易读的版本:

$dir_array = array_filter(array_diff($dir_array, array(".", "..")), is_dir);

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有