我想检查文件夹是否包含至少1个真实文件。我试过这段代码:
$dir = "/dir/you/want/to/scan";
$handle = opendir($dir);
$folders = 0;
$files = 0;
while(false !== ($filename = readdir($handle))){
if(($filename != '.') && ($filename != '..')){
if(is_dir($filename)){
$folders++;
} else {
$files++;
}
}
}
echo 'Number of folders: '.$folders;
echo '<br />';
echo 'Number of files: '.$files;
当文件夹scan
中有1个子文件夹和2个真实文件时;上面的代码给出了输出:
Number of folders: 0
Number of files: 3
所以看起来子文件夹被视为文件。但我只想检查真实文件。我怎样才能做到这一点?
答案 0 :(得分:3)
根据您指定路径的第一行(与脚本路径不同),您应该在is_dir if子句中组合$ dir和$ filename。
为什么?
因为如果您的脚本已启用:
/var/web/www/script.php
然后检查$ dir:
的/ etc / httpd的
其中包含子文件夹“conf”,您的脚本将检查子文件夹/ var / web / www / conf
答案 1 :(得分:3)
您可以使用copy
轻松完成这项工作:
glob()
答案 2 :(得分:1)
您可以使用scandir
scandir - 列出指定路径中的文件和目录
<?php
$dir = "../test";
$handle = scandir($dir);
$folders = 0;
$files = 0;
foreach($handle as $filename)
{
if(($filename != '.') && ($filename != '..'))
{
if(is_dir($filename))
{
$folders++;
}
else
{
$files++;
}
}
}
echo 'Number of folders: '.$folders;
echo '<br />';
echo 'Number of files: '.$files;
?>