Die PHP-Funktion mkdir() implementiert die Methode zum rekursiven Erstellen hierarchischer Verzeichnisse

怪我咯
Freigeben: 2023-03-13 15:00:01
Original
2261 Leute haben es durchsucht

Bei der Projektentwicklung ist es unvermeidlich, Ordner auf dem Server zu erstellen, z. B. das Verzeichnis beim Hochladen von Bildern, das Verzeichnis beim Parsen von Vorlagen usw. Dies wird in meinem aktuellen Projekt nicht verwendet, daher habe ich mehrere Methoden zum Erstellen hierarchischer Verzeichnisse in einer Schleife zusammengefasst.

PHPs Standard-MKDIR kann jeweils nur eine Ebene von Verzeichnissen erstellen. Wenn Sie Verzeichnisse auf allen Ebenen Schicht für Schicht erstellen möchten, erstellen Sie sie normalerweise zuerst auf der übergeordneten Ebene und dann auf der Ebene Sie können sie jedoch auch manuell auf diese Weise erstellen, was jedoch etwas zu mühsam wäre.

Was machen wir, wenn wir Programme schreiben? Soll die Funktion, die wir benötigen, bald automatisch realisiert werden? Die Methode besteht darin, uns dabei zu helfen, automatisch hierarchische Verzeichnisse durch Programme zu erstellen und zu vervollständigen.

Es gibt zwei Denkweisen:

1. Von oben nach unten (Eltern → Kind)

1. Bestimmen Sie zunächst, ob das übergeordnete Verzeichnis vorhanden ist, und erstellen Sie es. Bestimmen Sie, ob das Unterverzeichnis der zweiten Ebene vorhanden ist. Rufen Sie im zweiten Schritt auf die Funktion selbst rekursiv mit dem Unterverzeichnis als Parameter.

2. Von unten nach oben (untergeordnetes Verzeichnis → übergeordnetes Verzeichnis)


Bestimmen Sie zunächst, ob das untere Verzeichnis vorhanden ist existiert Wenn es existiert, wenn es nicht existiert, wird das obere Verzeichnis als Parameter für die Rekursion verwendet.


Es gibt mehrere Methoden:

1: Rekursiv ein Verzeichnis erstellen. Diese Methode ist meiner Meinung nach derzeit die bessere.

2: Kaskadierende Verzeichnisse rekursiv erstellen Wenn Sie die erste Methode nicht verstehen, können Sie sie mit der folgenden Methode kombinieren, um

function mkDirs($dir){
  if(!is_dir($dir)){
    if(!mkDirs(dirname($dir))){
      return false;
    }
    if(!mkdir($dir,0777)){
      return false;
    }
  }
  return true;
}
mkDirs('1/2/3/');
Nach dem Login kopieren

3: Kaskadierung iterativ zu erstellen Verzeichnisse

function mkDirs1($path){
  if(is_dir($path)){//已经是目录了就不用创建
    return true;
  }
  if(is_dir(dirname($path))){//父目录已经存在,直接创建
    return mkdir($path);
  }
  mkDirs1(dirname($path));//从子目录往上创建
  return mkdir($path);//因为有父目录,所以可以创建路径
}
//mkDirs1('1/2/3/');
Nach dem Login kopieren

PS: Manchmal befinden sich die Dateien des Programmskripts nicht unbedingt im Stammverzeichnis der Website, und die erstellten Dateien müssen im Stammverzeichnis erstellt werden, dann müssen wir die Website verwenden Stammverzeichnispfad: $_SERVER['

DOCUMENT
function makedir($path){
  $arr=array();
  while(!is_dir($path)){
    array_push($arr,$path);//把路径中的各级父目录压入到数组中去,直接有父目录存在为止(即上面一行is_dir判断出来有目录,条件为假退出while循环)
    $path=dirname($path);//父目录
  }
  if(empty($arr)){//arr为空证明上面的while循环没有执行,即目录已经存在
    echo $path,'已经存在';
    return true;
  }
  while(count($arr)){
    $parentdir=array_pop($arr);//弹出最后一个数组单元
    mkdir($parentdir);//从父目录往下创建
  }
}
makedir('1/2/3');
Nach dem Login kopieren
_ROOT'];Daher empfehle ich nicht, die letzten drei Methoden zu verwenden.

Die folgenden drei entstehen, indem der Pfad durch „/“ geteilt wird.

Das obige ist der detaillierte Inhalt vonDie PHP-Funktion mkdir() implementiert die Methode zum rekursiven Erstellen hierarchischer Verzeichnisse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage