scandir用PHP递归递归

时间:2012-06-08 13:17:25

标签: php arrays multidimensional-array 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>';
?>

1 个答案:

答案 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[$dir] = $files;
                }
        }
        return $result;
    }
$rafiles = RAgetFiles('/usr');
    echo '<pre>';
    print_r($rafiles);
    echo '</pre>';
?>

完美无缺。