PHP is_file()无法正常工作

时间:2014-06-09 09:31:19

标签: php

我想检查目录中的文件,并使用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
(
)

2 个答案:

答案 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!
    }
}