我目前在PHP中使用此代码:
// RETURN FILE NAMES FROM VAULT INTO ARRAYS
$vault_folder = "\\\\namespace\\namespace\\folder\\folder\\folder\\folder\\";
foreach (new DirectoryIterator($vault_folder) as $fileInfo) {
if (strtolower(pathinfo($fileInfo, PATHINFO_EXTENSION)) == "pdf") {
if($fileInfo->isDot() || !$fileInfo->isFile()) continue;
$files[] = $fileInfo->getFilename();
};
}
arsort($files);
我想知道的是,这是否是撰写此声明的最有效方式。
目前,它正在搜索网络位置“$vault_folder
并将所有文件名存储到数组$files
中。
该文件夹包含多个文件,我只希望它将PDF存储在$files
数组中,因此:
if (strtolower(pathinfo($fileInfo, PATHINFO_EXTENSION)) == "pdf")
strtolower
被列为为我们创建部分PDF文件的公司之一,将文件保存为.PDF
而非.pdf
。它还需要在代码中稍后链接回文件,因此需要将其存储在正确的大小写中。
返回7k文件需要7秒钟,给予或接受!
答案 0 :(得分:1)
尝试使用glob()
,它可能比在自定义循环中实现逻辑要快一些:
$files = glob('\\\\namespace\\namespace\\folder\\folder\\folder\\folder\\*.{pdf,PDF}', GLOB_BRACE);
关于您当前的实施,SplFileInfo
已经有了获取扩展程序的方法:getExtension()
。