以下是我列出目录中文件的代码起始部分:
$files = scandir($dir);
$array = array();
foreach($files as $file)
{
if($file != '.' && $file != '..' && !is_dir($file)){
....
我试图列出一个目录中的所有文件但不包括子文件夹。这段代码可以工作,但是会列出文件和文件夹。我在上面的代码中添加了 !is_dir($file)
语句,但结果仍然相同。
我认为应该是这样的:
$files = scandir($dir);
foreach($files as $file)
{
if(is_file($dir.$file)){
....
只需使用is_file
。
示例:
foreach($files as $file)
{
if( is_file($file) )
{
// Something
}
}
$scannedFiles = scandir($fullPath);
$files = [];
foreach ($scannedFiles as $file) {
if (!in_array(trim($file), ['.', '..'])) {
$files[] = $file;
}
}
if ($handle = opendir($opendir)) {
while (false !== ($entry = readdir($handle))) {
$pos = strpos( $entry, '.' );
if ($entry != "." && $entry != ".." && is_numeric($pos) ) {
............ 很好的条目
DIRECTORY_SEPARATOR
常量将文件附加到其目录路径中。 function getFileNames($directoryPath) {
$fileNames = [];
$contents = scandir($directoryPath);
foreach($contents as $content) {
if(is_file($directoryPath . DIRECTORY_SEPARATOR . $content)) {
array_push($fileNames, $content);
}
}
return $fileNames;
}
$files = glob($dir . DIRECTORY_SEPARATOR . "*");
$files = glob($dir . DIRECTORY_SEPARATOR . "*.php");
$files = glob($dir . DIRECTORY_SEPARATOR . "*.js");
function fileList(string $directory, string $extension="") :array
{
$filetype = '*';
if(!empty($extension) && mb_substr($extension, 0, 1, "UTF-8") != '.'):
$filetype .= '.' . $extension;
else:
$filetype .= $extension;
endif;
return glob($directory . DIRECTORY_SEPARATOR . $filetype);
}
使用方法:
$files = fileList($configData->includesDirectory, '');
通过我的自定义函数,我可以包含一个扩展名或将其留空。另外,我可能会忘记在扩展名前面加上“.”,但仍然可以成功运行。