如何在php中从数组创建嵌套目录

如何在php中从数组创建嵌套目录,php,arrays,laravel,directory,laravel-5.1,Php,Arrays,Laravel,Directory,Laravel 5.1,在laravel中,我尝试使用控制台创建文件。我将创建的文件是一个trait文件。我的情况是,如果我只写文件名,它会按需要创建。但当作为目录传递时,它不会被创建 数组可以是动态的。目录的深度取决于用户 举个例子:我选择了两个级别的目录 我的阵列是: Array ( [0] => 'RootTrait' // the root place of the trait folder [1] => 'Level-1' // Directory inside the trait

在laravel中,我尝试使用控制台创建文件。我将创建的文件是一个trait文件。我的情况是,如果我只写文件名,它会按需要创建。但当作为目录传递时,它不会被创建

数组可以是动态的。目录的深度取决于用户

举个例子:我选择了两个级别的目录

我的阵列是:

Array
(
    [0] => 'RootTrait' // the root place of the trait folder
    [1] => 'Level-1' // Directory inside the trait folder
    [2] => 'Level-2' // Directory inside the Level-1 folder
    [3] => 'file.php' // The file that will be created inside Level 2 folder
)
我应该怎么做才能做到这一点

到目前为止,我尝试的代码是:

/**
 * Process the creation of trait file.
 * 
 * @param  string $traitName
 * @param  \Illuminate\Filesystem\Filesystem $file
 * @param  string $nameSpace
 * @return bool
 */
 public function processTraitFile($traitName, Filesystem $file, $nameSpace = 'App')
 {
     $traitFileName = $file->get('app/stubs/Trait.stub');

     $newTraitFile = str_replace(['TraitName', 'App'], [$traitName, $nameSpace], $traitFileName);

     if (! file_exists("app/Http/Traits/{$traitName}")) {
         $traitFolders = explode('/', $traitName);
         $lastElement = array_pop($traitFolders);

         foreach ($traitFolders as $key => $folder) {
             $file->makeDirectory('app/Http/Traits/' . $folder, 0755, true);
         }
     }

     return $file->put("app/Http/Traits/{$traitName}.php", $newTraitFile);
 }
上面的方法确实创建了文件夹,但不是嵌套的。它正在创建如下文件夹:

|-- Root Trait Folder
    |-- Level-1
    |-- Level-2
    |-- file.php
我知道这一定很容易实现,但我失败了


请帮帮我。谢谢。

我只需更改您的for循环即可

$n = 'app/Http/Traits/';
foreach ($traitFolders as $key => $folder) {
         $file->makeDirectory($n. $folder, 0755, true);
         $n .= $folder.'/';
     }

我将简单地更改您的for循环

$n = 'app/Http/Traits/';
foreach ($traitFolders as $key => $folder) {
         $file->makeDirectory($n. $folder, 0755, true);
         $n .= $folder.'/';
     }
您可以使用:

您可以使用:

请使用下面的代码

<?php 
   $n = 'app/Http/Traits/';
   $n .= $traitName;
   mkdir($n, 0755, true);
?>

请使用下面的代码

<?php 
   $n = 'app/Http/Traits/';
   $n .= $traitName;
   mkdir($n, 0755, true);
?>