Возвратить массив из функции

178
08 июня 2021, 18:00

Данная функция должна возвратить массив с папками БЕЗ использования глобальных переменных. Подскажите, пожалуйста, как это сделать?

function dirFinder ($folder)
{
    $all_in_folder = scandir($folder);
    foreach ($all_in_folder as $value) {
        if ($value == '.' || $value == '..') continue;
        $path_to_object = "$folder\\$value";
        if (is_dir($path_to_object)) {
            $arr[] = "$folder\\$value";
            dirFinder($path_to_object);
        }
    }
}

Папки должны записываться в данный массив:

$arr[] = "$folder\\$value";

В результате должно получиться что-то вроде этого:

Array
(
    [0] => W:\mysite.loc\Папка 1
    [1] => W:\mysite.loc\Папка 1\Папка 2
    [2] => W:\mysite.loc\Папка 1\Папка 2\Папка 3
    [3] => W:\mysite.loc\Папка 1\Папка 2\Папка 3\Папка 4
)
Answer 1

Исправлен код функции:

function dirFinder ($folder)
{
    $arr = [];
    $all_in_folder = scandir($folder);
    foreach ($all_in_folder as $value) {
        if ($value == '.' || $value == '..') continue;
        $path_to_object = "$folder\\$value";
        if (is_dir($path_to_object)) {
            array_push($arr, "$folder\\$value");
            dirFinder($path_to_object);
        } 
    }
    return $arr;
}

Если используете php скрипт в среде Linux, вместо "$folder\\$value" используйте другой разделитель "$folder/$value"

Второй вариант:

function dirFinder ($folder, $arr = null)
{
    if ($arr === null) {
        $arr = [];
    }
    $all_in_folder = scandir($folder);
    foreach ($all_in_folder as $value) {
        if ($value == '.' || $value == '..') continue;
        $path_to_object = "$folder".DIRECTORY_SEPARATOR."$value";
        if (is_dir($path_to_object)) {
            array_push($arr, "$folder".DIRECTORY_SEPARATOR."$value");
            $arr = dirFinder($path_to_object, $arr);
        } 
    }
    return $arr;
}
$arr = dirFinder("C:\\mysite.loc");
print_r($arr);
READ ALSO
Не добавляется телефон в amocrm

Не добавляется телефон в amocrm

ЗадачаСоздать контакт и добавить к нему телефон

197
Поиск подходящих выражений как это сделано в IDEA

Поиск подходящих выражений как это сделано в IDEA

Есть набор предложений по типу "Green Apple", и каждое имеет от 2 до 7 словНужно находить среди них к примеру "Green Apple" по таким ключевым словам как...

86