为什么 array_filter 函数仅适用于 PHP 中循环中的最后一个目录


Why does the array_filter function work only for last directory in a loop in PHP?

在循环遍历各种目录时,我使用array_filter将目录的文件名放入数组中,然后我们继续下一个目录;

$HALLO 1 的值是从数组中读取的值。

我注意到的一件事是,当 array_filter() 在 $HALLO 1 上操作并且 $HALLO 1 等于目录数组的情况下,var_dump() 函数不会列出第一个目录中的文件,而只列出最后一个目录中包含的文件。但是,当 $HALLO 1 等于一个且唯一的目录时,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; 
    } 
?>

因为每次迭代都会覆盖$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);