目前我有以下代码,这是我能够在下面的代码中设置标志的最佳方式,所以我可以使用::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;?>
Run Code Online (Sandbox Code Playgroud)
设置RecursiveDirectoryIterator::SKIP_DOTS 作为一个选项(在第二个参数),以new RecursiveDirectoryIterator()应足以与您当前的代码工作.
使用PHP 5.3+,您也可以将RecursiveDirectoryIterator其声明为自己的变量,然后在该变量上调用方法:
$iterator = new RecursiveDirectoryIterator($folder);
$iterator->setFlags(RecursiveDirectoryIterator::SKIP_DOTS);
// Still need to pass $iterator to a RecursiveIteratorIterator...
Run Code Online (Sandbox Code Playgroud)
setFlags()是从FilesystemIterator基类继承的方法.
但是,由于您已经在使用模板格式化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): ?>
<!-------------------------------------------------------------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -->
Run Code Online (Sandbox Code Playgroud)