PHP循环mkdir失败

时间:2013-06-18 10:34:21

标签: php

很抱歉打扰你。我正在运行mkdir来复制我存储在数据库中的目录。

如果我在php页面上显示数据,目录如下所示:

element1/Content/EPAC/PROD
element1/Content/EPAC/TEST
element1/Content/EPAC_SG/PROD
element1/Content/EU/PROD
element1/Content/EU/TEST

以上是数据的子集。当我遍历它时,上面的子集发生了什么,它创建了目录element1 / Content / EPAC / PROD但是忽略了element1 / Content / EPAC / TEST和element1 / Content / EPAC_SG / PROD,然后它创建了element1 / Content / EU / PROD但忽略了element1 / Content / EU / TEST等,并继续像这样循环。我正在使用的代码是:

foreach($NSRarray as $value)
{
    mkdir("ftpfolders/$value", 0700, true);
}

*上面的$ value变量是从DB获取的'element1 / Content / EPAC / PROD'记录。

有什么想法吗?提前谢谢,Ste

2 个答案:

答案 0 :(得分:1)

我会将其分成一次生成一个目录。

将数组转换为某种形式。像

$dics=array(
'element1' => array(
   'Content' => array(
      'EPAC' => array('PROD', 'TEST'),
      'EPAC_SG' => array('PROD')
      'EU' => array('PROD', 'TEST')
     )
   )
);

然后循环遍历它,从array_keys($ dics)开始并创建目录(如果不存在)。 继续使用array_keys($ dics ['element1']),然后重复它直到你到达内心的孩子。

希望这有帮助。

答案 1 :(得分:1)

使用此代码,这将根据您的要求为您提供适当的文件夹结构

<?php
$NSRarray = array('element1/Content/EPAC/PROD', 'element1/Content/EPAC/TEST', 'element1/Content/EPAC_SG/PROD','element1/Content/EU/PROD','element1/Content/EU/TEST');

foreach($NSRarray as $value)
{
    $getFolders = explode('/' , $value);
    $mainFoldername = "ftpfolders";
    $countfolder = 0;
    $countfolder = count($getFolders);
    $tempName = "";
    $i = 0;
    for($i == 0; $i < $countfolder; $i++){
        $tempName .= $getFolders[$i];
         if (!file_exists("$mainFoldername/$tempName")) {
            mkdir("$mainFoldername/$tempName", 0700, true);
        } 
        $tempName .= '/';
    }  
}

?>