我想检查目录中的文件,并使用scandir()
和is_file()
进行检查。在这个简单的代码中is_file()
为我返回false
。但在目录中我有3个文件。
$files = scandir('uploads/slideShow');
$sfiles = array();
foreach($files as $file) {
if( is_file($file) ) {
$sfiles[] = $file;
// echo $file;
}
}
带有scandir()
变量的$file
的结果:
Array
(
[0] => .
[1] => ..
[2] => 6696_930.jpg
[3] => 9_8912141076_L600.jpg
[4] => untitled file.txt
)
$sfiles
的结果:
Array
(
)
答案 0 :(得分:6)
问题是scandir
只返回文件名,因此您的代码在当前目录中查找untitled file.txt
等,而不是扫描的目录。
这与glob("uploads/slideShow/*")
形成对比,glob
将返回您正在查看的文件的完整路径。如果您将此is_file
与{{1}}一起使用,则应该可以正常使用。
答案 1 :(得分:5)
那是因为您检查它是否是当前目录中的文件,而文件位于另一个目录中...试试这个:
$files = scandir('uploads/slideShow');
// ...
foreach($files as $file) {
if ( is_file('uploads/slideShow/'. $file) ) {
// file found!
}
}