список каталогов и подкаталогов в виде древовидного меню - PullRequest
0 голосов
/ 19 апреля 2019

Здравствуйте. Я хотел бы перечислить каталог и подкаталоги (только без файлов) как древовидное меню

<ul class="tree-menu">
  <li>Directory I</li>
    <ul>
      <li>Sub 1</li>
        <ul>
          <li>sub a</li>
          <li>sub b</li>
        </ul>
      <li>Sub 2</li> 
    </ul>
  <li>Directory II</li>
  <li>Directory III</li>
</ul>

Сначала я написал 2 функции для проверки того, что в каталоге есть какой-либо другой каталог, а затем для вывода списка каталогов.и подкаталоги

по отдельности оба работают хорошо, но после первого гнезда в секунду что-то не работает

function dir_is_empty($path)
        {
          $empty = true;
          $dh = @opendir($path);
          while (false !== ($file = readdir($dh))) {
            if ($file !== "." && $file !== "..") {
              if (is_dir($file)) {
                $empty = false;
                break;
              }
            }
          }
          closedir($dh);
          return $empty;
        }

        function getDirectory($path)
        {
          $ignore = array('cgi-bin', '.', '..');
          $dh = @opendir($path);
          while (false !== ($file = readdir($dh))) {
            if (!in_array($file, $ignore)) {
              if (dir_is_empty("$path/$file")) {
                if (is_dir("$path/$file")) {
                  echo "<li>$path/$file</li>";
                  getDirectory("$path/$file");
                }
              } else {
                echo "<ul>";
                if (is_dir("$path/$file")) {
                  echo "<li>$path/$file</li>";
                  getDirectory("$path/$file");
                }
                echo "</ul>";
              }
            }
          }
          closedir($dh);
        }

        getDirectory(".");
...