|
|
|
| Есть вопрос, имеем функцию рекурсивного поиска файлов в папке, на выходе получаем ссылки на сами файлы, бился целый день, не могу понять, как можно на выходе получить сначало массив найденных файлов, пробовал черех explode, получил кучу массивов с одни значением в каждом.
<?
function search($target, $directory, $dontSearch){
if(is_dir($directory)){
$direc = opendir($directory);
while(false !== ($file = readdir($direc))) {
if(!in_array($file, $dontSearch)) {
if(is_file($directory."/".$file)) {
if(preg_match("/$target/i", $file)) {
echo "<a href=\"$directory/$file\">$file</a><br/>\n";
}
}
else if(is_dir($directory."/".$file)){
search($target,$directory."/".$file, $dontSearch);
}
}
}
closedir($direc);
}
return;
}
?>
|
$dontSearch - переменная в которой находится список игнорируемых имён файлов и папок. | |
|
|
|
|
|
|
|
для: Nemesis
(29.04.2007 в 00:01)
| | Объявите массив глобальным - тогда он будет доступен на каждой итерации, а также после окончания работы функции
<?
function search($target, $directory, $dontSearch){
global $arr;
if(is_dir($directory)){
$direc = opendir($directory);
while(false !== ($file = readdir($direc))) {
if(!in_array($file, $dontSearch)) {
if(is_file($directory."/".$file)) {
if(preg_match("/$target/i", $file)) {
$arr[] = "<a href=\"$directory/$file\">$file</a><br/>\n";
}
}
else if(is_dir($directory."/".$file)){
search($target,$directory."/".$file, $dontSearch);
}
}
}
closedir($direc);
}
return;
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(29.04.2007 в 14:32)
| | Спасибо. Но я наверное чего-то не пойму, если я пишу конструкцию вида:
<?
...
echo $arr[] = "<a href=\"$directory/$file\">$file</a><br/>\n";
...
?>
|
то, получаю список найденных файлов, и если написать следом:
<?
...
print_r ($arr);
...
?>
|
то, получу колличество массивов равное количеству найденных файлов, причём в каждом из массивов будет на один найденный файл больше, тоесть в первом 1, в последнем все найденные. А вот как получить один такой массив с полным списком? | |
|
|
|
|
|
|
|
для: Nemesis
(29.04.2007 в 15:54)
| | print_r ($arr) выводите после вызова функции
<?php
// Вызов функции
search($target, $directory, $dontSearch);
// Работа с результирующим массивом $arr
echo "<pre>";
print_r($arr);
echo "</pre>";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(29.04.2007 в 17:30)
| | Спасибо, то, что надо. | |
|
|
|