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 に答える