Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-从从目录文件获取的值中删除“.”和“..”_Php_Directory - Fatal编程技术网

PHP-从从目录文件获取的值中删除“.”和“..”

PHP-从从目录文件获取的值中删除“.”和“..”,php,directory,Php,Directory,我使用此代码是为了从目录中获取文件列表: $dir = '/restosnapp_cms/images/'; if ($dp = opendir($_SERVER['DOCUMENT_ROOT'] . $dir)) { $files = array(); while (($file = readdir($dp)) !== false) { if (!is_dir($dir . $file)) { $files[] = $file;

我使用此代码是为了从目录中获取文件列表:

$dir = '/restosnapp_cms/images/'; 
if ($dp = opendir($_SERVER['DOCUMENT_ROOT'] . $dir)) { 
    $files = array(); 
    while (($file = readdir($dp)) !== false) { 
        if (!is_dir($dir . $file)) { 
            $files[] = $file; 
        } 
    } 
    closedir($dp); 
} else { 
    exit('Directory not opened.'); 
}
我想去掉“.”和“…”的值


有可能这样做吗?谢谢

只需首先检查它们:

while ($file = readdir($p)) {
    if ($file == '.' || $file == '..') {
        continue;
    }
    // rest of your code
}

只需首先检查它们:

while ($file = readdir($p)) {
    if ($file == '.' || $file == '..') {
        continue;
    }
    // rest of your code
}
比*dir函数有趣得多:

$dir = new DirectoryIterator($_SERVER['DOCUMENT_ROOT'] . $dir);
foreach($dir as $file) {
   if (!$file->isDir() && !$file->isDot()) {
      $files[] = $file->getPathname();
   }
}
但底线是,无论采用哪种方式,都需要使用条件函数。

比*dir函数有趣得多:

$dir = new DirectoryIterator($_SERVER['DOCUMENT_ROOT'] . $dir);
foreach($dir as $file) {
   if (!$file->isDir() && !$file->isDot()) {
      $files[] = $file->getPathname();
   }
}

但底线是,无论采用哪种方式,都需要使用条件。

当然,在输出之前可以对其进行过滤。有许多数组函数可以以某种方式提供帮助。或者,您可以在循环中输入if,如果不是,则只输出名称。或者…这不是更容易吗$files=array_filterglob$dir/*,'is_file';当然,您可以在输出之前对其进行过滤。有许多数组函数可以以某种方式提供帮助。或者,您可以在循环中输入if,如果不是,则只输出名称。或者…这不是更容易吗$files=array_filterglob$dir/*,'is_file';工作起来很有魅力!谢谢:+1-我遇到过一些情况,在这些情况下,我后来想添加更多不应列出的文件名,在这种情况下,需要一个in_array$文件,array'.','。。。有时更容易。就像一个符咒!谢谢:+1-我遇到过一些情况,在这些情况下,我后来想添加更多不应列出的文件名,在这种情况下,需要一个in_array$文件,array'.','。。。有时更容易。