Всех приветствую, товарищи! Есть одна директория, допустим, "folder". Внутри него несколько десятков папок (внутри которых как папки, так и файлы). И так же не исключено, что в "folder" тоже могут быть файлы. Мне нужно собрать в массив имена всех папок в папке "folder". Файлы и папки внутри папок не нужны. Искал информацию, нашёл функции "scandir" и "is_dir". Но не могу понять, как с помощью "is_dir" отфильтровать массив, полученный с помощью "scandir". Не могли бы помочь с этим? Может, есть более правильный и легкий вариант, чем данные функции?
PHP: // пути папок первого уровня $paths = glob('/folder/*', GLOB_ONLYDIR); print_r($paths); // имена папок первого уровня $names = array_map(fn ($path) => basename($path), glob('/folder/*', GLOB_ONLYDIR)); print_r($names);
Добрый день! Коллега amberson показал как это сделать используя glob и array_map. Альтернативное решение - SPL класс DirectoryIterator PHP: $path = 'folder'; $names = []; foreach (new DirectoryIterator($path) as $file) { if($file->isDot() ) continue; if($file->isDir()) $names[] = $file->getFilename(); } print_r($names); Сам не проверял, но говорят что класс DirectoryIterator работает намного быстрее чем функция global. источник: https://www.mm-newmedia.de/2010/04/glob-vs-directoryiterator/