在php中使用循环创建多个目录

时间:2014-03-16 04:57:15

标签: php directory

我从文本文件中获取数据(数据是:daa1 daa2 daa3在不同的行上),然后尝试创建具有确切名称的文件夹,但只创建了daa3文件夹。此外,当我使用整数时,它会创建所有文件夹,静态字符串就是这种情况,即" faraz"。

$file = __DIR__."/dataFile.txt";
$f = fopen($file, "r");
$line =0;
 while ( $line < 5 )
{
    $a = fgets($f, 100); 

    $nl = mb_strtolower($line);
    $nl = "checkmeck/".$nl;
    $nl =  $nl."faraz"; // it works for static value i.e for faraz
//$nl =  $nl.$a; // i want this to be the name of folder
    if (!file_exists($nl)) {
    mkdir($nl, 0777, true);


}
$line++;
}

请帮助

2 个答案:

答案 0 :(得分:2)

使用feof函数更好地逐行获取文件内容

检查此完整代码

 $file         = __DIR__."/dataFile.txt";
$linecount    = 0;
$handle       = fopen($file, "r");
$mainFolder   = "checkmeck";

while(!feof($handle))
{
  $line       = fgets($handle);
  $foldername = $mainFolder."/".trim($line);

  //$line is line name daa1,daa2,daa3 etc
  if (!file_exists($foldername)) {
    mkdir($foldername, 0777, true);
  }
  $linecount++;
  unset($line);
}

fclose($handle);

输出文件夹

1countfaraz
2countfaraz
3countfaraz

答案 1 :(得分:1)

不确定为什么您的代码出现问题,但我发现使用file_get_contents()代替fopen()fgets()更为直接:

$file = __DIR__."/dataFile.txt";
$contents = file_get_contents($file);
$lines = explode("\n", $contents);
foreach ($lines as $line) {
    $nl = "checkmeck/". $line;
    if (!file_exists($nl)) {
        echo 'Creating file '. $nl . PHP_EOL;
        mkdir($nl, 0777, true);
        echo 'File '. $nl .' has been created'. PHP_EOL;
    } else {
        echo 'File '. $nl .' already exists'. PHP_EOL;
    }
}

上面的echo语句用于调试,以便您可以查看代码正在执行的操作。一旦它正常工作,你可以删除它们。

因此,您获取整个文件内容,用换行符(explode())拆分它(\n),然后遍历文件中的行。如果您说的是真的,文件看起来像:

daa1
daa2
daa3

...然后它应该创建以下文件夹:

checkmeck/daa1
checkmeck/daa2
checkmeck/daa3