In diesem Artikel wird hauptsächlich die Verwendung rekursiver Funktionen in PHP zum Erstellen mehrstufiger Verzeichnisse vorgestellt. Ich hoffe, dass er für alle hilfreich ist.
Die Details sind wie folgt:
function Directory($dir){ if(is_dir($dir) || @mkdir($dir,0777)){ //查看目录是否已经存在或尝试创建,加一个@抑制符号是因为第一次创建失败,会报一个“父目录不存在”的警告。 echo $dir."创建成功<br>"; //输出创建成功的目录 }else{ $dirArr=explode('/',$dir); //当子目录没创建成功时,试图创建父目录,用explode()函数以'/'分隔符切割成一个数组 array_pop($dirArr); //将数组中的最后一项(即子目录)弹出来, $newDir=implode('/',$dirArr); //重新组合成一个文件夹字符串 Directory($newDir); //试图创建父目录 if(@mkdir($dir,0777)){ echo $dir."创建成功<br>"; } //再次试图创建子目录,成功输出目录名 } } Directory("A/B/C/D/E/F");
Das Ausgabeergebnis ist wie in der Abbildung gezeigt:
Aber das ist zu sehen Das Schreiben ist zu mühsam. Als ich mir die Dateifunktionen im Handbuch ansah, sah ich eine dirname()-Funktion , deren Prototyp wie folgt lautet:
string dirname ( string $path )
gibt eine Zeichenfolge mit dem vollständigen Pfad zu einer Datei zurück. Diese Funktion gibt den Verzeichnisnamen zurück, nachdem der Dateiname entfernt wurde.
In Windows können sowohl Schrägstrich (/) als auch Backslash () als Verzeichnistrennzeichen verwendet werden. Unter anderen Umständen ist es ein Schrägstrich (/).
kann leicht optimiert werden:
function Directory($dir){ if(is_dir($dir) || @mkdir($dir,0777)){ echo $dir."创建成功<br>"; }else{ Directory(dirname($dir)); if(@mkdir($dir,0777)){ echo $dir."创建成功<br>"; } } }
Der Effekt ist der gleiche.
Danach habe ich im Internet nach Antworten gesucht und eine gefunden, die äußerst aufschlussreich war:
function Directory( $dir ){ return is_dir ( $dir ) or Directory(dirname( $dir )) and mkdir ( $dir , 0777); }
Jetzt erklären wir die gesamte Funktion:
Führen Sie zunächst die Prioritätsreihenfolge der logischen Operatoren in PHP ein: && > , UND-Typ > 0777)); Stellen Sie zunächst fest, ob das Zielverzeichnis vorhanden ist. Abhängig von den Kurzschlusseigenschaften von oder wird das gesamte Folgende kurzgeschlossen und ausgeführt übersprungen; wenn das Zielverzeichnis nicht existiert, wird der folgende Funktionskörper ausgeführt:
Directory(dirname( $dir )) und mkdir ( $dir , 0777)
Ich habe darüber nachgedacht
Zuerst die Rekursion durchführen Der Zweck vonbesteht darin, zuerst eine Rekursion durchzuführen, um zu bestätigen, dass das übergeordnete Verzeichnis (dirname($dir)) erstellt wurde, sodass das Die nachfolgende mkdir()-Funktion gibt keine Warnung aus, wenn sie beim Erstellen eines Unterverzeichnisses das übergeordnete Verzeichnis nicht finden kann. Nachdem Sie die Tiefe der Rekursion eingegeben und bestätigt haben, dass das tiefste Stammverzeichnis vorhanden ist, erstellen Sie Verzeichnisse der Reihe nach vom Stammverzeichnis abwärts. Abschließend empfehle ich denjenigen, die auf der Suche nach einem Job sind, online nach einigen Interviewfragen bei großen Unternehmen zu suchen. Schließlich sollten sie die Prüfung umfassender und tiefer absolvieren Außerdem muss man die Fragen noch ein wenig auffrischen, da es leicht passieren kann, dass man zu viel Ehrgeiz hat, aber zu wenig. Ich habe die Funktion am Anfang mehrmals optimiert, bevor sie normal genutzt werden konnte.
Dies ist eine Interviewfrage zum rekursiven Erstellen eines mehrstufigen Verzeichnisses in PHP. In Zukunft wird der Herausgeber einige interessante Interviewfragen finden, die er mit Ihnen teilen kann.
Zusammenfassung
: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.
Verwandte Empfehlungen:
Verwendung der Einzel- und Listenfunktionen in PHP
PHP-Suche nach geografischen Standorten und EntfernungsberechnungVerwenden Sie FähigkeitenPHP, um Dateien im Verzeichnis abzurufenDas obige ist der detaillierte Inhalt vonPHP verwendet rekursive Funktionen, um mehrstufige Verzeichnisse zu erstellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!