在循环浏览各种目录时,我使用array_filter
将目录的文件名放入数组中,然后继续进入下一个目录;
$ HALLO1的值是从数组中读取的值。
我注意到的一件事是当$ HALLO1上运行array_filter()时,如果$ HALLO1等于目录数组,var_dump()函数不会列出第一个目录中的文件,而只列出上一个目录中包含的文件。但是,当$ HALLO1等于一个且只有目录时,array_filter()可以工作并列出该目录中包含的所有文件。这是为什么 ?
<?php
foreach ($CC1 as $directory) {
$GG1 = strval($CC1[$dd]);
$HALLO1 = $GG1;
echo "HALLO1 = " . $HALLO1 ;
$iterator = new DirectoryIterator(dirname($HALLO1));
//*****************************************************
$f_files = array_filter(glob("$HALLO1*"), 'is_file');
var_dump($f_files);
//*****************************************************
++$dd;
}
?>
答案 0 :(得分:1)
因为你在每次迭代中都覆盖了$ f_files
$f_files = array()
foreach ($CC1 as $directory) {
$GG1 = strval($CC1[$dd]);
$HALLO1 = $GG1;
$f_files = array_merge($f_files, array_filter(glob("$HALLO1*"), 'is_file'));
}
var_dump($f_files);