博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php递归创建文件夹的两种方法
阅读量:4581 次
发布时间:2019-06-09

本文共 1588 字,大约阅读时间需要 5 分钟。

1、前言

php中 mkdir 只能创建一个目录(一级)而对于多级目录(创建一级目录时上级目录不存在)就会创建失败。所以在不确定目录级数的时候,我们就需要使用类似一级一级目录的检测,已保证目录创建成功;

递归创建目录的思路:

首先判断 dirname 是否是目录,如果是则尝试创建;

如果失败,则尝试创建上一级目录,使用上一级目录继续 调用本身方法;

2、采用分割目录的方法创建目录

/** * [simpleBuilt 通过分割方式创建目录] * @param  string $dirname [目录名称] * @return [type]          [description] */public function simpleBuilt($dirname) {    //判断是否是目录,如果是尝试创建目录    if(is_dir($dirname) || @mkdir($dirname, 0700)) {        echo "{$dirname}创建成功".PHP_EOL;    }else{        $dirArr = explode('/', $dirname);        array_pop($dirArr);//移除最后一项        $newDirName = implode('/', $dirArr);        $this->simpleBuilt($newDirName);//重新调用        if(@mkdir($dirname, 0777)) {            echo "{$dirname}创建成功".PHP_EOL;        }    }}

 

3、使用dirname 方法进行创建

string dirname ( string $path )

给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名。(自动去除最后一个子目录)

/** * [commonBuilt 基于dirname的方法创建目录] * @param  string $dirname [目录名称] * @return [type]          [description] */public function commonBuilt($dirname){    if(is_dir($dirname) || @mkdir($dirname, 0777)) {        echo "{$dirname}创建成功".PHP_EOL;    }else{        $this->commonBuilt(dirname($dirname));        if(@mkdir($dirname, 0777)) {            echo "{$dirname}创建成功".PHP_EOL;        }    }}

4、使用dirname 方法进行创建(简化版)

/** * [superBuilt  commomBuilt方法的简写方法] * @param  string $dirname [目录名称] * @return [type]          [description] */public function superBuilt($dirname){    return is_dir($dirname) or $this->superBuilt(dirname($dirname)) and mkdir($dirname, 0777);}

pHP中逻辑运算符的优先级顺序:&& > || > and > or,即符号型>字母型,AND型>OR型

转载于:https://www.cnblogs.com/ImCehnyx/p/7781088.html

你可能感兴趣的文章
【05月22日】预分红股息率最高排名
查看>>
Android学习总结(二)——Service基本概念和生命周期
查看>>
chr()//ord() //进制转换函数//eval()//文件函数//split()
查看>>
第一章 Java程序设计概述
查看>>
定时调动 (项目保留备份代码码)
查看>>
Leetcode-Divide Two Integers
查看>>
HTML 首页倒三角形导航块
查看>>
每天一道Java题[9]
查看>>
结对编程2——单元测试
查看>>
python 函数/列表的应用
查看>>
C#与MES
查看>>
LR接口测试---Java Vuser之jdbc查询(调试前)
查看>>
SQL Server 各版本安装包分享
查看>>
.net项目移植后的虚拟目录的配置问题
查看>>
JSP页面中引入另一个JSP页面
查看>>
Android笔记——活动的生命周期
查看>>
springmvc使用包装的pojo接收商品信息的查询条件
查看>>
【Linux】【Services】【Configuration】puppet
查看>>
poj 1002:487-3279(水题,提高题 / hash)
查看>>
RAC环境上搭建DG
查看>>