【问题标题】:Use recursive function to make subdir使用递归函数制作子目录
【发布时间】:2017-11-04 14:53:41
【问题描述】:

给定一个停止编号,例如 3。然后它将在此文件夹中创建一个文件夹和 2 个子文件夹,在每个子文件夹中创建 3 个子文件夹。

如何使用一个简单的php递归函数来做到这一点?

这是我的代码,我做不到,我考虑这个问题很久了..

function mkpath($path,$stop_turn){

    if($stop_turn==1){
      return 0;
    }


    if(!file_exists($path)){
      mkdir($path,0777,false);
    }
    else
      $path=$path.'/'.$stop_turn;

    return mkpath($path,$stop_turn-1);

}

mkpath("1",2);

【问题讨论】:

  • 路径,路径/1,路径/2,路径/1/1,路径/1/2,路径/1/3,路径/2/1,路径/2/2,路径/ 2/3?
  • 是的!确切地!怎么办?

标签: php function loops mkdir


【解决方案1】:

下面给出的 sn-p 会做以下事情,

让我们假设给定路径是 /1 并且 $till 是 3

它将创建一个 1 in 1 的子目录

在 /1/1 中会创建 2 个子目录,分别命名为 1 和 2

在 /1/1/1 和 /1/1/2 中,它将创建三个名为 1 2 3 的子目录。

function mkpath($path, $till, $count = 1) {
    if($count > $till)
        return ;
    for($i = 1; $i<=$count; $i++ ) {
        $newPath = $path."$i";
        if(!file_exists($newPath)){
            mkdir($newPath,0777,false);
        }
        mkpath($newPath."/", $till, $count + 1);
    }
}

【讨论】:

  • 谢谢!你完美地解决了这个让我疯狂近 2 小时的问题!非常感谢!
【解决方案2】:

应该有一个 mkdir 命令行参数(/s 或 /p)来在 mkdir 路径参数中创建所有缺少的子目录

【讨论】:

  • with 3rd param in mkdir as true - recursive 允许创建在路径名中指定的嵌套目录。他真的应该只创建叶目录
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-30
  • 2017-03-26
  • 1970-01-01
  • 2013-11-29
  • 2012-08-13
  • 1970-01-01
  • 2011-06-12
相关资源
最近更新 更多