使用下面的代码检查单个文件有效..但我必须在循环中检查许多文件。我正在开发一个包含大量文件(大约1000个)的项目。文件名在前缀上有所不同,有些中断。这是一个使用CI框架的项目。
案例I:使用is_file()和file_exists()
<?php function custom_file_exists($filePath)
{
if((is_file($filePath))&&(file_exists($filePath))){
return 'true';
}
return 'false';
}
?>
案例二:使用glob()
<?php function custom_file_exists($filePath) {
$files = glob('uploads/folder/*.pdf', GLOB_BRACE);
if (in_array($filePath, $files)) {
return 'true';
} else {
return 'false';
}
}
?>
以下是我想要处理的代码部分。文件检查功能在传递单个filePath时有效,但在使用以下循环执行相同操作时失败。
<?php foreach($files as $file):
//checking all files in loop
$search = 'uploads/folder/'.$file->name;
$result = custom_file_exists($search);
echo $result; //return 'false' even if the file is present
//checking for single file
$search1 = 'uploads/folder/filename';
$result1 = custom_file_exists($search1);
echo $result; //return 'true' when file is present
endforeach;?>
我无法弄清楚代码有什么问题。有人可以帮助我吗?任何想法都表示赞赏。谢谢你的帮助。
根据请求对glob函数进行转储。
<?php $allfiles = glob("uploads/folder/*.pdf");
print_r($allfiles);?>
结果是:
数组([0] =&gt; uploads / folder / file1.pdf [1] =&gt; uploads / folder / file2.pdf [2] =&gt; uploads / folder / file3.pdf [3] =&gt; uploads / folder / file4.pdf [4] =&gt; uploads / folder / file5.pdf [5] =&gt; uploads / folder / file6.pdf [6] =&gt; uploads / folder / file7.pdf [7] = &gt; uploads / folder / file8.pdf ......
对于我在循环中使用的$文件:print_r($ files)给出以下输出。
数组([0] =&gt; stdClass对象([id] =&gt; 1 [名称] =&gt; file1.pdf [描述] =&gt;这里的东西[published_date] =&gt; 2016 [发布] =&gt ; 1)
[1] =&gt; stdClass对象([id] =&gt; 2 [name] =&gt; file2.pdf [description] =&gt;这里的东西[published_date] =&gt; 2016 [publish] =&gt; 1)
[2] =&gt; stdClass对象([id] =&gt; 3 [name] =&gt; file3.pdf [description] =&gt;这里的东西[published_date] =&gt; 2016 [publish] =&gt; 1)
[3] =&gt; stdClass对象([id] =&gt; 4 [name] =&gt; file4.pdf [描述] =&gt;这里的东西[published_date] =&gt; 2016 [发布] =&gt; 1)......