Php 搜索目录,仅搜索jpg/js和数组中的fetch

Php 搜索目录,仅搜索jpg/js和数组中的fetch,php,arrays,function,Php,Arrays,Function,我正在使用一个函数来显示所有文件。但我不知道如何在一个逗号分隔的变量中获取它,然后在数组中获取它。 这是我使用的函数 function recursiveGlob($dir, $ext1, $ext2, &$array) { $globFiles = glob("$dir/*.$ext1"); $globFiles2 = glob("$dir/*.$ext2"); $globDirs = glob("$dir/*", GLOB_ONLYDIR); foreach ($globDirs

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

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);
函数recursiveGlob($dir、$ext1、$ext2和$array){ $globFiles=glob(“$dir/*.$ext1”); $globFiles2=glob($dir/*.$ext2”); $globDirs=glob($dir/*,glob_ONLYDIR); foreach($globDirs作为$dir){ 递归glob($dir、$ext1、$ext2); } foreach($globFiles作为$file){ //打印“$file
”;//如果输出到浏览器,则将“\n”替换为“
” $array[]=$file; } foreach($globFiles2作为$file){ //打印“$file
”;//如果输出到浏览器,则将“\n”替换为“
” $array[]=$file; } } $array=array(); recursiveGlob('C:\wamp\www\scanner\scanner','png','js',$array);
这可能是个愚蠢的问题。但是,请帮帮我。

似乎最终你想要一个包含所有找到的文件的数组,只需替换即可

print $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');
函数recursiveGlob($dir、$ext1、$ext2){ $globFiles=glob(“$dir/*.$ext1”); $globFiles2=glob($dir/*.$ext2”); $globDirs=glob($dir/*,glob_ONLYDIR); $array=array(); $array_file=array(); foreach($globDirs作为$dir){ $array=array_merge($array,recursiveGlob($dir,$ext1,$ext2)); } foreach($globFiles作为$file){ //打印“$file
”;//如果输出到浏览器,则将“\n”替换为“
” $array_file[]=$file; } $array=array\u merge($array,$array\u file); $array_file=array(); foreach($globFiles2作为$file){ //打印“$file
”;//如果输出到浏览器,则将“\n”替换为“
” $array_file[]=$file; } $array=array\u merge($array,$array\u file); 返回$array; } $results=recursiveGlob('C:\wamp\www\scanner\scanner','png','js'); 试试这个:

<?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>";
       }
     }
}
?>


获取变量中的所有文件
实际上没有意义。您介意重命名吗?谢谢您的回答,但我收到了警告:警告:缺少recursiveGlob的参数4(您忘记用我给您的替换调用recursiveGlob的最后一行。在末尾添加
$array
参数。
recursiveGlob('C:\wamp\www\scanner\scanner','png','js;
->
recursiveGlob('C:\wamp\www\scanner\scanner','png','js',$array)
我已经添加了,正如你所说,根据你的回答编辑了我的问题代码。哦,是的,顺便说一句,你也必须在递归函数中替换它。在第一个foreach循环中。对不起,我没有想到。是的,你也可以帮我在函数外的变量中获取它。例如,recursiveGlob('C:\wamp\www\scanner\scanner','png','js','array);,我可以在变量中得到它吗,例如:$result=recursiveGlob('C:\wamp\www\scanner\scanner','png','js','array);
<?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>";
       }
     }
}
?>