2012-06-08 2 views
0

나는 특정한 질문이있다. 나는 PHP를 처음 사용하기 때문에 조금 더 힘들어진다. :)scandir PHP로 재귀

그래서, 필자는 dirs를 반복적으로 스캔하여 결과에서 특정 배열을 출력하는 기능을 가지고있다. 나는 왜 그것이 일어나고 있는지 거의 이해하지만, 나는 내가 필요로하는 것처럼 그것을 어떻게 바꿀 것인지를 알 수 없었다. 도와주세요! 순간

내가 배열 받고 있어요 :

Array 
(
    [0] => Array 
     (
      [album1] => Array 
       (
        [0] => . 
        [1] => .. 
       ) 
     ) 
    [1] => Array 
     (
      [album2] => Array 
       (
        [0] => . 
        [1] => .. 
       ) 
     ) 
    [2] => Array 
     (
      [album3] => Array 
       (
        [0] => . 
        [1] => .. 
       ) 
     ) 
) 

을하지만 얻을 필요가 :

Array 
    (
    [album1] => Array (
         [0] => . 
         [1] => .. 
        ) 
    [album2] => Array 
        (
         [0] => . 
         [1] => .. 
        ) 
    [album3] => Array 
        (
         [0] => . 
         [1] => .. 
        ) 
    ) 

기능 자체 것은 :

<?php 

    function RAgetFiles($main_dir, $result = array()) { 

     $dirs = scandir($main_dir); 
      foreach($dirs as $dir) { 
       if (is_dir("$main_dir/$dir")){ 

        if ($dir === '.' || $dir === '..') { 
         continue; } 
        $files=scandir($main_dir."/".$dir); 
        $result[] = array($dir => $files); 
       } 
     } 
     return $result; 
    } 

    $rafiles = RAgetFiles('thumbs'); 
    echo '<pre>'; 
    print_r($rafiles); 
    echo '<pre>'; 
?> 
+3

아마도 SPL 디렉토리 반복자를 사용하는 것이 더 쉬울 것입니다. http://www.php.net/manual/en/class.directoryiterator.php –

+2

'$ results [$ dir] = $ files' 시도해보십시오. –

+0

@kuh -chan 당신은 대답을해야합니다. – flowfree

답변

1
<?php 
    function RAgetFiles($main_dir, $result = array()) { 
     $dirs = scandir($main_dir); 
      foreach($dirs as $dir) { 
       if (is_dir("$main_dir/$dir")){ 
        if ($dir === '.' || $dir === '..') { 
         continue; } 
        $files=scandir($main_dir."/".$dir); 
        $result[$dir] = $files; 
       } 
     } 
     return $result; 
    } 
$rafiles = RAgetFiles('/usr'); 
    echo '<pre>'; 
    print_r($rafiles); 
    echo '</pre>'; 
?> 

작품 아주.

+0

예, tnx! 완벽하게 작동 =) – ruuter

+0

@ruuter 기꺼이 도왔습니다 :) – Steve

+1

물론 그랬 읍니다 =) 밤새는 아니더라도 시간을 절약했습니다 =) – ruuter