目前我有下面的代码,什么是我能够在下面的代码中设置标志以便我可以使用 ::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/