搜索目录,只有jpg / js和数组中的fetch

时间:2013-08-27 11:06:09

标签: php arrays function

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

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);

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

2 个答案:

答案 0 :(得分: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');

答案 1 :(得分: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>";
       }
     }
}
?>