2

我正在使用一个函数来显示所有文件。但我不确定如何在逗号分隔的变量中获取它,然后在数组中获取。这是我使用的功能。

function recursiveGlob($dir, $ext1, $ext2, &$array) {
$globFiles = glob("$dir/*.$ext1");
$globFiles2 = glob("$dir/*.$ext2");
$globDirs  = glob("$dir/*", GLOB_ONLYDIR);

foreach ($globDirs as $dir) {
    recursiveGlob($dir, $ext1, $ext2);
}

foreach ($globFiles as $file) {
    // print "$file<br>"; // Replace '\n' with '<br />' if outputting to browser
    $array[] = $file;
}
foreach ($globFiles2 as $file) {
    // print "$file<br>"; // Replace '\n' with '<br />' if outputting to browser
    $array[] = $file;
}
}
$array = array ();
recursiveGlob('C:\wamp\www\scanner\scanner', 'png', 'js', $array);

这可能是一个愚蠢的问题。但请帮助我。

4

2 回答 2

2

似乎最后你想要一个包含你找到的每个文件的数组,只需替换

print $file;

经过

$array[] = $file;

然后,使用引用将此数组发送到递归函数中:

function recursiveGlob($dir, $ext1, $ext2, &$array)

并像这样使用它:

$array = array ();
recursiveGlob('C:\wamp\www\scanner\scanner', 'png', 'js', $array);
// At this point, $array will be an array with every files you found.

告诉我我是否正确解决了您的问题,如果您需要在路径级别订购阵列,不确定您在寻找什么,但它会导致阵列更清晰。

另一个没有引用并返回数组的解决方案:

function recursiveGlob($dir, $ext1, $ext2) {
$globFiles = glob("$dir/*.$ext1");
$globFiles2 = glob("$dir/*.$ext2");
$globDirs  = glob("$dir/*", GLOB_ONLYDIR);
$array = array ();
$array_file = array ();
foreach ($globDirs as $dir) {
    $array = array_merge ($array, recursiveGlob($dir, $ext1, $ext2));
}

foreach ($globFiles as $file) {
// print "$file<br>"; // Replace '\n' with '<br />' if outputting to browser
    $array_file[] = $file;
}
$array = array_merge ($array, $array_file);
$array_file = array ();
foreach ($globFiles2 as $file) {
// print "$file<br>"; // Replace '\n' with '<br />' if outputting to browser
    $array_file[] = $file;
}
$array = array_merge ($array, $array_file);
return $array;
}
$results = recursiveGlob('C:\wamp\www\scanner\scanner', 'png', 'js');
于 2013-08-27T11:11:13.007 回答
0

尝试这个 :

<?php
  $iterator = new DirectoryIterator("folder name");
  foreach ($iterator as $fileinfo) {


   if ($fileinfo->isFile()) {
        if ($fileinfo->getExtension() == "jpg" || $fileinfo->getExtension() == "js"){
       echo $fileinfo->getBasename('.'.$fileinfo->getExtension())."<br>";
       }
     }
}
?>
于 2013-08-27T11:20:13.900 回答