Heim > Backend-Entwicklung > PHP-Tutorial > Die PHP-Funktion mkdir implementiert die Methode zur rekursiven Erstellung hierarchischer Verzeichnisse

Die PHP-Funktion mkdir implementiert die Methode zur rekursiven Erstellung hierarchischer Verzeichnisse

墨辰丷
Freigeben: 2023-03-28 15:40:01
Original
1892 Leute haben es durchsucht

Wenn wir mehrstufige Verzeichnisse zu unserer Site hinzufügen möchten, können wir diese Funktion mit der PHP-Funktion mkdir() erreichen. Es hat einen gewissen Referenzwert und interessierte Freunde können sich darauf beziehen.

Das Folgende sind die Informationen, die ich aus dem Internet zusammengestellt habe. Ich werde die spezifische Verwendung der PHP-Funktion mkdir im Detail vorstellen und hoffe, dass sie Freunden, die diesbezüglich Bedürfnisse haben, hilfreich sein werden.

Während der Projektentwicklung ist es unvermeidlich, Ordner auf dem Server zu erstellen, z. B. das Verzeichnis zum Hochladen von Bildern, das Verzeichnis zum 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 aus der übergeordneten Ebene und dann Schicht für Schicht. Wenn Sie es jedoch manuell auf diese Weise erstellen, ist es etwas zu mühsam.

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.


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

2: Erstellen Sie rekursiv kaskadierende Verzeichnisse. Wenn Sie die erste Methode nicht verstehen, können Sie sie mit der folgenden Methode kombinieren, um < zu verstehen 🎜>

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

3: Iterativ kaskadierende Verzeichnisse erstellen

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,&#39;已经存在&#39;;
    return true;
  }
  while(count($arr)){
    $parentdir=array_pop($arr);//弹出最后一个数组单元
    mkdir($parentdir);//从父目录往下创建
  }
}
makedir(&#39;1/2/3&#39;);
Nach dem Login kopieren

PS: Manchmal ist die Datei der Das Programmskript muss sich im Stammverzeichnis der Website befinden und die erstellten Dateien müssen im Stammverzeichnis erstellt werden. Dann müssen wir den Pfad zum Stammverzeichnis der Website verwenden: $_SERVER['DOCUMENT_ROOT']; Ich empfehle nicht, die folgenden drei Methoden zu verwenden.

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


function mk1($dir){
  $arr=explode("/",$dir);
  $path=&#39;&#39;;
  for($i=0;$i< count($arr);$i++){
    $path.=$arr[$i].&#39;/&#39;;
    if(!is_dir($path)){
      mkdir($path,0777);
    }
  }
}

function mk2($dir){
  static $i=0;
  $path=&#39;&#39;;
  $arr=explode("/",$dir);
  if($i < count($arr)){
    $path.=$arr[$i];
    mkdir($path,0777,true);
    $i++;
    mk2($path."/");
  }
}
function mkdirs0($path){
  $dirs = explode(&#39;/&#39;,$path);
  for ($c=0;$c < count($dirs); $c++) {
    $thispath="";
    for ($cc=0; $cc <= $c; $cc++) {
      $thispath.=$dirs[$cc].&#39;/&#39;;
    }
    if (!is_dir($thispath)) {
      mkdir($thispath,0777);
    }
  }
}
Nach dem Login kopieren

Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.

Verwandte Empfehlungen:


So laden Sie Dateien in TP5 in PHP hoch


php

So konvertieren Sie ein zweidimensionales assoziatives Array in einen String

Detaillierte Erläuterung der Methode zum Webshell-Scannen von Dateitrojanern in PHP


Das obige ist der detaillierte Inhalt vonDie PHP-Funktion mkdir implementiert die Methode zur rekursiven Erstellung 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