在PHP中使用数组创建dir

时间:2014-02-10 09:12:39

标签: php

我有一个如下所示的数组结构。我想使用此数组在文件夹中创建一个文件夹。我该怎么做?

$folder=array(4) {
  [0]=>
  string(3) "img"
  [1]=>
  string(7) "dummies"
  [2]=>
  string(6) "slides"
  [3]=>
  string(6) "01.jpg"
}

我试过这样但是它没有解决我的问题..

 $imglength=count($folder);
 $i=0;
 $fold=$i<($imglength-1);
 while(!file_exists($fold))
 {
  mkdir($fold);
 }

3 个答案:

答案 0 :(得分:0)

嗯,这是一种做法。可能不是最有效的方式,但它确实有效。

<?php
    $folders = Array(
        Array("img", "dummies", "slides", "01.jpg"),
        Array("img_24", "dummy", "slideshows", "65.png")
    );

    for ($i=0;$i<count($folders);$i++) {
        for ($j=0;$j<count($folders[$i]);$j++) {
            $path .= $folders[$i][$j] . "/";
            mkdir($path);
        }
        unset($path);
    }
?>

它基本上读取数组并将每个名称放入一个变量中,该变量自身扩展以便创建路径。当然,不会创建JPEG文件,但是您可以使用file_put_contents左右这样做,只需将另一个数组值称为“文件”而不是默认的“文件夹”定义。然后当它读取定义时,它会自动创建一个文件而不是文件夹,然后写入位图数据。

编辑:对于文件创建,您可以像我上面解释的那样使用file_put_contents,我做了一小段代码来演示使用。

<?php
    $folders = Array(
        Array("img", "dummies", "slides", Array("01.jpg", "11abcdefghijklmnopqrstuvxyz")),
        Array("img_24", "dummy", "slideshows", Array("65.png", "22abcdefghijklmnopqrstuvxyz"))
    );

    for ($i=0;$i<count($folders);$i++) {
        for ($j=0;$j<count($folders[$i]);$j++) {
            $path .= (gettype($folders[$i][$j]) != "array" ? $folders[$i][$j] . "/" : $folders[$i][$j][0]);
            if (gettype($folders[$i][$j]) != "array") {
                mkdir($path);
            }else{
                file_put_contents($path, (isset($folders[$i][$j][1]) ? $folders[$i][$j][1] : "nil"));
            }
        }
        unset($path);
    }
?>

JPEG文件的第二个值用于文件的内容。您可以通过读取正在使用的文件将位图数据放入其中,然后将其作为值放入。这样你就可以正确地创建图像了。

答案 1 :(得分:0)

<html>
<body>

<form  method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>

</body>
</html> 

<?php

  if ($_FILES["file"]["error"] > 0)
  {
        echo "Error: " . $_FILES["file"]["error"] . "<br>";
  }
  else
  {
        $tmp_name   =   $_FILES["file"]["tmp_name"];
  }


  $folders    =  array("img","dummies","slides");



foreach($folders as $folder)
{

  $folder_path .= $folder."/";


    while(!file_exists($folder_path))
    {

        mkdir($folder_path);

    }


}


move_uploaded_file($tmp_name, "$folder_path/".$_FILES['file']['name']);

答案 2 :(得分:0)

试试

<?php 
$folder=array(array("img","dummies","slides","01.jpg"));


$imglength=count($folder);
 $i=0;
 $fold=$i<($imglength-1);

for($k=0;$k<$imglength;$k++)
{
    $sub_array_count=count($folder[$k]);
    $tmp='';
    for($j=0;$j<$sub_array_count;$j++)
    {
        if($j==0)
        {
            mkdir($folder[$k][$j]);


        }else
        {
            echo $folder[$k][($j-1)];
            echo "<br>";
            echo $tmp.=$folder[$k][($j-1)]."/";
            mkdir($tmp.$folder[$k][$j]);

        }
    }

}

?>