【问题标题】:Which is better to read files from a directory using PHP - glob() or scandir() or readdir()? [closed]使用 PHP - glob() 或 scandir() 或 readdir() 从目录中读取文件哪个更好? [关闭]
【发布时间】:2013-08-19 20:59:08
【问题描述】:

我是 PHP 初学者。我想从特定文件夹/目录中读取文件。我不想要其中的子文件夹或文件。我只想列出目录中的直接文件。我最终得到了 3 个解决方案,glob()readdir()scandir()。我可以像这样列出文件;

foreach (glob("*.*") as $filename) {
    echo $filename."<br />";
}

if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
            echo "filename: .".$file."<br />";
        }
        closedir($dh);
    }
}

$files = scandir($dir);
foreach($files as $val){
  echo $val;
}

哪个更快更高效?

【问题讨论】:

  • “哪个更快,服务器的头痛更少”这似乎并不难测试自己。
  • 设置计时器,运行循环,设置新计时器,比较时间。繁荣:即时回答
  • glob() 在 7.081E-5 秒内生成。 readdir() 在 0.00151491 秒内生成。 scandir() 在 0.00162292 秒内生成。

标签: php directory


【解决方案1】:

也许是 SPL 中的 DirectoryIterator? http://php.net/manual/en/class.directoryiterator.php

foreach(new DirectoryIterator($dir_path) as $item) {
   if (!$item->isDot() && $item->isFile()) {
       echo $item->getFilename();
   }
}

【讨论】:

  • isFile 不排除 isDot 吗?为什么需要同时检查这两种情况?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-19
  • 2011-01-05
  • 2010-11-24
  • 2013-08-14
相关资源
最近更新 更多