Генератор в рекурсивной функции

99
10 июня 2021, 22:10

Рекурсивная функция возвращает все папки из директории C:\Test, кроме вложенных. Что необходимо изменить, чтобы генератор yield возвращал все папки, включая вложенные?

function dirFinder ($folder)
{
    $all_in_folder = scandir($folder);
    foreach ($all_in_folder as $object) {
        if ($object == '.' || $object == '..') continue;
        $path_to_object = "$folder" . DIRECTORY_SEPARATOR . "$object";
        if (is_dir($path_to_object)) {
            yield $path_to_object;
            dirFinder($path_to_object);               
        }
    }
}
foreach (dirFinder('C:\Test') as $value) {
    echo $value . '<br />';
}
Answer 1
dirFinder($path_to_object);

просто возвращает в тело цикла генератор, но при этом ничего не возвращается из первичного вызова функции dirFinder('c:\test');

замените эту строчку на

foreach (dirFinder($path_to_object) as $subFolder) {
    yield $subFolder;
}
READ ALSO
Не работает форма на спйте

Не работает форма на спйте

хотел бы узнать почему не работает форма на сайте, есть сайт http://vialusocom/product/wordpress-pennant При клике на купить в 1 клик вылезает модальное окно, хотел...

132
Как заставить nginx передать OPTIONS запрос в PHP?

Как заставить nginx передать OPTIONS запрос в PHP?

По какой то причине nginx отвечает на запросы OPTIONS кодом 405 и стандартной страницей ошибки nginxКак заставить nginx передать запрос в php?

93
php бот telegramm

php бот telegramm

Есть у кого кусочек рабочего кода с отправкой в телеграмм-чат (чат бот стандартный, api телеграмма) сообщения и кнопки под ним, типа "принять",...

132
Как изменить высоту строк highchart?

Как изменить высоту строк highchart?

Есть блок, в нем используется highchart, но строчки слишком высокие, как сделать их меньше?

94