2012-06-08 5 views
0

У меня есть конкретный вопрос. Я новичок в php, поэтому мне все еще немного сложно :)scandir recursivly с 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

try '$ 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

Смежные вопросы