")) {//прочитать имя выше директории $ aboveDir = getcwd (); //вернуться к текущей директории ChDir ($ iCurrDir); } Еще {$ aboveDir = ""; } $ DirArr = Array (); $ dirArr [] = $ iCurrDir; searchTree (); В начале исполнения кода, текущий каталог является главным каталог, в котором находится скрипт. Первое утверждение получает путь текущего каталога верхнюю и присваивает его переменной, $ iCurrDir. Функция getcwd () без аргументов возвращает путь к текущей рабочей директории. Родительский каталог в корневой каталог может или не может существовать. Его путь присваивается переменной, $ aboveDir.
Родительский каталог в корневой каталог не будет существовать, если верхний каталог корневой каталог, если это так, то значение переменной, $ aboveDir будет "". Следующий сегмент выше код присваивает соответствующее значение переменной $ aboveDir. После этого вы должны создать массив, который будет содержать пути всех каталогах из корневого каталога, вниз. После этого создание заявлении, путь в корневой каталог присваивается в качестве первого элемента массива. Далее в коде у вас есть призыв к рекурсивной функции. Рекурсивный функция определена ниже этого вызова.
Рекурсивная функция Это контур рекурсивной функции: Функция searchTree () {//получить имена всех подкаталогов текущего каталога без пути. //присоединиться имена подкаталогов в пути текущей директории //и отправить полные пути подкаталогов в массив. //перейти к следующему подкаталоге в алфавитном порядке, что вы еще не посетили. //вернуться на один каталог, если каждый подкаталог в текущем каталоге //посетили. } Есть четыре сегменты кода в рекурсивной функции. Для того, чтобы перечислить подкаталоги любой каталог, этот каталог должен быть текущий каталог. Читайте выше функции контур.
Первый фрагмент кода получает имена без путей в текущем каталоге. Первый раз, когда функция вызывается, текущий каталог верхнего каталога. Второй сегмент образует полные пути подкаталоги и отправляет их в массив. Третий сегмент изменяет те