2014-02-10 2 views
0

다음과 같은 배열 구조가 있습니다. 이 배열을 사용하여 폴더 내에 폴더를 만들고 싶습니다. 어떻게해야합니까?PHP에서 배열을 사용하여 dir 만들기

$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); 
} 
+0

'$의 배를 시도? 이 변수에는'true' 또는'false'가 포함될 것입니다. 맞습니까? –

+0

루트 디렉토리 폴더에서 file_exists ($ path_from_root. '/ somedir/file /'. $ fold) 검사가 종료되는지 여부 – Dev

+0

'array_map ('mkdir', $ array)'은 어떻습니까? (파일/디렉토리가 존재하면 실패하지만 계속 진행합니다.) –

답변

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 파일의 두 번째 값은 파일의 내용으로 사용됩니다. 사용중인 파일을 읽고 값으로 배치하여 비트 맵 데이터를 넣을 수 있습니다. 그렇게하면 이미지가 제대로 만들어집니다. 그게 무슨`이다

+0

ThanKYou so much !!! 마지막 물건 아. 그 대신 01.jpg 폴더를 만들고 싶습니다. 대신 그 이미지 파일을 그 폴더에 넣고 싶습니다. 제발 도와주세요. 제발 .. .. –

+0

당신을 진심으로 환영합니다. 게시물을 편집 :-) – ascx

+0

정말 고마워요!^_^ –

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']); 
+0

ThanKYou 너무 많이 !!! 마지막으로 아 01.jpg 폴더를 만들고 싶습니다. 대신 그 이미지 파일을 그 폴더에 넣고 싶습니다 ... 제발 도와주세요. 제발 .. .. –

+0

@ user3048483 이미 이미지가 있습니다. 양식을 통해 업로드 ?? –

+0

@ user3048483 확인 된 코드가 업데이트되었습니다. 희망하시는 것이 있으시길 바랍니다. –

0

그냥 $ i가 ($의 imglength-1) <=

<?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]); 

     } 
    } 

} 

?> 
+0

귀중한 일에 감사드립니다. :) –

+0

다행입니다. –

관련 문제