Рубрики
Uncategorized

Анализ метода реализации дерева каталогов чтения PHP

Автор оригинала: David Wong.

В этой статье описывается реализация дерева каталогов чтения PHP. Для вашей справки приведем следующие сведения:

Некоторое время назад такой вопрос был в письменном экзамене компании XX:

Используйте PHP для отображения дерева каталогов!

В то время я был в замешательстве! Есть еще некоторые основные идеи, но использование рекурсивного алгоритма, но метод работы с файлом каталога PHP не очень знаком, поэтому сегодня хороший учебник!

Решение:

1. Перечислите файлы в каталоге. 2. Судите, является ли это каталогом. Если это так, продолжайте повторять. 3. Сохраните все имена файлов в многомерном массиве

php
function recurDir($pathName)
{
  //Save the result in the result variable
  $result = array();
  $temp = array();
  //Determine whether the variable passed in is a directory
  if(!is_dir($pathName) || !is_readable($pathName)) {
    return null;
  }
  //Take out the names of files and subdirectories in the directory, and use the scandir function
  $allFiles = scandir($pathName);
  //Traverse them
  foreach($allFiles as $fileName) {
    //Judge whether they are. And... Because these two things are not...
    if(in_array($fileName, array('.', '..'))) {
      continue;
    }
    //Path plus file name
    $fullName = $pathName.'/'.$fileName;
    //If it is a directory, continue to traverse the directory
    if(is_dir($fullName)) {
      //Save the file information in this directory into an array
      $result[$fullName] = recurDir($fullName);
    }else {
      //If it's a file, save it to a temporary variable first
      $temp[] = $fullName;
    }
  }
  //Take out the document
  if($temp) {
    foreach($temp as $f) {
      $result[] = $f;
    }
  }
  return $result;
}
//Verify that this function is easy to use!
$tree = recurDir('cart_ajax');
echo "
";
print_r($tree);
echo "
"; ?>

структура папок cart_ Ajax

Содержимое в папке JS

Показывать результаты

Дело сделано! Уровень каталога действительно такой, но он выглядит слишком низким! Украсьте его немного!

function beautifulTree($arr, $l = '-|')
{
  static $l = '';
  static $str = '';
  //Traverse the directory tree just got
  foreach($arr as $key=>$val) {
    //If it is an array, it means that it is a directory. Then add - | to its sub file to indicate that it is the next level
    if(is_array($arr[$key])) {
      $str.=$l.$key."
"; $l.='-|'; beautifulTree($arr[$key], $l); }else { $str.=$l.$val."
"; } } $l = ''; return $str; } $beautifulTree = beautifulTree($tree); echo "
";
print_r($beautiful);
echo "
";

Показывать результаты

Подробнее о содержании, связанном с PHP заинтересованные читатели могут ознакомиться со специальной темой: Краткое описание навыков работы с каталогом PHP, краткое описание работы с файлами PHP, краткое описание алгоритма и навыков обхода PHP, учебник по структуре и алгоритму PHP, краткое описание алгоритма программирования PHP, навыки работы с массивами PHP, краткое описание использования строк PHP и регулярное использование PHP См. Краткое описание навыков работы с базой данных

Я надеюсь, что эта статья поможет вам в программировании на PHP.