例如,我下面有一个build.json文件.包含我在JSON中创建的基本文件夹/文件结构.

{

"folders": [

{

"name": "folder-a",

"files": [

{

"name": "file-a.html"

},

{

"name": "file-b.html"

}

],

"folders": [

{

"name": "sub-folder-a",

"files": [

{

"name": "sub-file-a.html"

},

{

"name": "sub-file-b.html"

}

]

}

]

},

{

"name": "folder-b",

"files": [

{

"name": "file-a.html"

},

{

"name": "file-b.html"

}

]

}

]

}

现在,我在下面创建了简单的PHP代码,可以遍历数组的第一部分.然后,当然,如果我继续在第一个foreach中进行foreach循环,则可以继续遍历数组.问题是我不知道阵列中将有多少个文件夹/文件.关于如何不知道循环多少就可以继续循环的任何想法?谢谢!

$json = file_get_contents('build.json');

$decode = json_decode($json);

foreach($decode as $key => $val){

foreach($val as $valKey => $data){

var_dump($data);

}

}

解决方法:

这是一个使用递归的工作脚本:

$json = file_get_contents('build.json');

$folders = json_decode($json);

function buildDirs($folders, $path = null){

$path = $path == null ? "" : $path . "/";

foreach($folders as $key => $val){

mkdir($path.$val->name);

echo "Folder: " . $path . $val->name . "
";

if(!empty($val->files)){

foreach($val->files as $file){

//Create the files inside the current folder $val->name

echo "File: " . $path . $val->name . "/" . $file->name . "
";

file_put_contents($path . $val->name . "/". $file->name, "your data");

}

}

if(!empty($val->folders)){ //If there are any sub folders, call buildDirs again!

buildDirs($val->folders, $path . $val->name);

}

}

}

buildDirs($folders->folders); //Will build from current directory, otherwise send the path without trailing slash /var/www/here

记住要对根文件夹设置正确的权限.

标签:loops,arrays,json,php,recursion

来源: https://codeday.me/bug/20191027/1947620.html

php 如何生成二级目录json,使用PHP根据已解码的JSON创建文件夹/文件结构相关推荐

  1. Jquery实现自动生成二级目录

    在博客园开通博客以后,就看到某位博友写的js自动生成目录的文章,当时觉得生成目录能给阅读带来方便,所以就直接拿来使用了.用了一段时间以后,发现只能生成一级目录,不能生成多级目录,有点美中不足.所以想着 ...

  2. php怎么生成一个文件夹里,php创建文件夹目录的教程

    php 中可以使用 mkdir()  函数创建文件夹,但 mkdir() 创建文件夹时需要注意的事项有很多,下面就来详细的说一下. php创建文件夹的方法 示例1: php 在创建文件夹时,需要先使用 ...

  3. C++:从json文件中读取参数/创建文件夹/位拼接

    目录 1.从json文件中读取参数 2.创建文件夹 3.位运算拼接 1.从json文件中读取参数 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,和xml ...

  4. ftp服务器目录创建文件夹权限设置,ftp服务器 创建文件夹权限设置

    ftp服务器 创建文件夹权限设置 内容精选 换一换 文件系统创建完成后,用户需在客户端挂载文件共享,在本地共享目录和CSG的文件共享建立映射,通过操作本地的目录实现对CSG共享目录的操作,实现数据实时 ...

  5. android 阻止文件生成方法,禁止软件创建文件夹 禁止创建文件夹

    安卓 怎么阻止软件在文件夹中创建文件 首先说明,Android软件之所以会在文件夹中创建文件,大多数是为了做软件缓存,防止反复的从服务器读取数据,照成用户流量浪费,如果强制的阻止可能会让软件报错. 一 ...

  6. mac 在 home 目录下创建文件夹

    1.修改auto_master 编译 /etc/auto_master 文件,注释掉或者移除以 /home 开头的那一行,保存. sudo vim /etc/auto_master 注释掉 /home ...

  7. ubuntu下无法在目录下创建文件夹,权限不足解决办法

    ubuntu下无法在目录下创建文件夹,权限不足解决办法 Ubuntu linux系统下 su:出现: authentication failure的解决办法 ubuntu下 sudo passwd r ...

  8. (转)Inno Setup入门(六)——在程序目录下创建文件夹

    本文转载自:http://blog.csdn.net/yushanddddfenghailin/article/details/17250789 创建文件夹可以使用[dirs]段实现,代码如下: [s ...

  9. java自用代码(包括:新建单线程、创建文件夹及文件、map转为json并将json写入txt、文件剪切或改名)...

    // 单向光闸写入文件线程new Thread(new Runnable() {// 将map转为jsonJSONObject obdjson = new JSONObject(data);@Over ...

最新文章

  1. file类打印目录---树状结构,递归
  2. 系统调研450篇文献,微软亚洲研究院推出超详尽语音合成综述
  3. gitee插件在androidstudio使用踩坑
  4. 霍金的遗愿清单:离开地球,警惕人工智能
  5. linux work queue
  6. 年会聚会派对邀请海报素材模板,创意和心意缺一不可
  7. 一个具自我复制功能的程序
  8. 基金业绩的python分析_DFQ2018绩效归因与基金投资分析工具.pdf
  9. CSS3参考手册(所有属性)
  10. C语言方差和标准差公式,方差概念及计算公式.docx
  11. 华为网络计算机登陆,华为路由器如何登录192.168.3.1入口设置界面
  12. 《数学之美》--吴军
  13. vs项目筛选器显示错乱、只显示部分文件
  14. 华为数通笔记-AAA
  15. xctf攻防世界 MISC高手进阶区 Ditf
  16. 【软考】系统集成项目管理工程师(十二)项目沟通管理
  17. 微信移动端招聘项目总结
  18. 三线表里加小短线_APA格式报告.doc
  19. Win7/Win8/8.1最方便安装方法:使用Nt6 HDD installer从主硬盘引导安装
  20. 借用smtp.qq.com发邮件

热门文章

  1. C++中之a[5](栈区)和int a=new int[5](堆区)有什么区别
  2. 《看聊天记录都学不会C语言?太菜了吧》(11)2分钟领悟数组
  3. 掌握Python爬虫基础,仅需1小时!
  4. linux+4.4+android,Ubuntu 14.04 x64配置Android 4.4 kitkat编译环境的方法
  5. oracle执行命令显示2,Oracle数据库执行脚本常用命令小结
  6. c语言浮点型常量表示平均数_小白基础知识必备|| 整型常量与进制间的转换
  7. flask取mysql数据很慢_[flask 优化] 由flask-bootstrap,flask-moment引起的访问速度慢的原因及解决办法...
  8. 楼层效果_1一28高楼最好最吉利的楼层是哪层?选楼层要注意什么?
  9. ros发布节点信息python_vscode开发ROS1(13)-python实现话题通信(msg)
  10. ofdm解调算法_OFDM系统中固定频偏算法