php - RecursiveDirectoryIterator 删除点文件夹

标签 php

目前我有下面的代码,什么是我能够在下面的代码中设置标志以便我可以使用 ::SKIP_DOTS 的最佳方式?

代码:

  $folder = 'images/banner_img';?>

    <?php foreach( new RecursiveIteratorIterator(new RecursiveDirectoryIterator($folder)) as $filename): ?>
      <?php $fileTypes = array("db"); 
            $fileType  = pathinfo($filename,PATHINFO_EXTENSION);

            if(!in_array(strtolower($fileType), $fileTypes)):?>


         <img src="<?php echo $filename; ?>" alt="" title="" data-thumb="<?php echo $filename;?>" />

       <?php endif;?>

    <?php endforeach;?>

最佳答案

设置 RecursiveDirectoryIterator::SKIP_DOTS as an option (in the second parameter) new RecursiveDirectoryIterator() 应该足以处理您当前的代码。

对于 PHP 5.3+,您可以选择将 RecursiveDirectoryIterator 声明为其自己的变量,然后对该变量调用方法:

$iterator = new RecursiveDirectoryIterator($folder);
$iterator->setFlags(RecursiveDirectoryIterator::SKIP_DOTS);
// Still need to pass $iterator to a RecursiveIteratorIterator...

setFlags() 是一种方法 inherited from the FilesystemIterator base class .

但由于您已经在使用模板格式 foreach:/endforeach; 样式,因此只在嵌套声明中执行此操作而不是使用其他变量是有意义的。

<!-- Instead, stick with your current iterator declaration and -->
<!-- add RecursiveDirectoryIterator::SKIP_DOTS as the 2nd param to its constructor -->
<?php foreach( new RecursiveIteratorIterator(new RecursiveDirectoryIterator($folder, RecursiveDirectoryIterator::SKIP_DOTS)) as $filename): ?>
<!-------------------------------------------------------------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -->

关于php - RecursiveDirectoryIterator 删除点文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27955770/

相关文章:

php - 从数组中获取最大的偶数

php - 如何检查数组(php)中的任何项目是否在表(mysql)中

php - Symfony,在路由方法中获取GET参数

PHP 错误无法从 Android 应用程序中检索 LIKE 语句

php - SQL Select 在 phpmyAdmin 和 . PHP HTML

php - 使用 nl2br 将 textarea 新行保存到 mysql ...如何很好地将数据返回到文本框?

javascript - Laravel - 仅当屏幕尺寸 > 768px 时包含文件

php - SQL : Get all rows if date is nul

php - 试图查询两个表,但我不知道如何查询

php - 表单未将图像插入 MySQL 数据库 - "unexpected $end"错误