PHP - 获取目录内容和信息以及输出数组

时间:2014-07-08 05:21:29

标签: php arrays multidimensional-array

我正在开展以下工作,但是对于如何将其输出感到困惑。

我有以下内容扫描目录内容,然后获取信息并将其保存为数组:

   //SCAN THE DIRECTORY
    $directories = scandir($dir);
    $directinfo = array();
    foreach($directories as $directory){
        if ($directory === '.' or $directory === '..') continue;
        if(!stat($dir.'/'.$directory)){

        } else {
            $filestat = stat($dir.'/'.$directory);
            $directinfo[] = array(
                'name' => $directory,
                'modtime' => $filestat['mtime'],
                'size' => $filestat['size']
            );

        }
    }

然而,当尝试输出它时,我只是得到了一些有很多休息的单个字母。我显然在输出循环中遗漏了一些东西。

    foreach($directinfo as $dirInfo){
        foreach($dirInfo as $drInfo){
            for ($x=0; $x<=2; $x++) {
                <span>"".$drInfo[$x]."<br/></span>";

            }
        }
    }

非常感谢帮助。 :)

4 个答案:

答案 0 :(得分:0)

我认为你处理的是二维数组,但将其视为一个3d数组。

是什么

foreach($directinfo as $dirInfo){
    foreach($dirInfo as $drInfo){
        var_dump($drInfo);
    }
}

给你?

答案 1 :(得分:0)

您正在构建单个数组dirInfo。

Php foreach首先获取数组;

foreach($dirInfo as $info) { 
 echo "<span>" . $info['name'] . "</span>";
}

答案 2 :(得分:0)

您已完成所有操作,只需删除for loop

并尝试执行以下操作 -

       foreach($directinfo as $dirInfo){
            foreach($dirInfo as $key=>$drInfo){             
                echo "<span>".$key."=>".$drInfo."<br/></span>";             
            }
        }

答案 3 :(得分:0)

试试这个功能。它将返回带有路径的所有文件的列表。

// to list the directory structure with all sub folders and files
function getFilesList($dir)
{
    $result = array();
    $root = scandir($dir);
    foreach($root as $value) {
        if($value === '.' || $value === '..') {
            continue;
        }
        if(is_file("$dir$value")) {
            $result[] = "$dir$value";
            continue;
        }
        if(is_dir("$dir$value")) {
            $result[] = "$dir$value/";
        }
        foreach(getFilesList("$dir$value/") as $value)
        {
            $result[] = $value;
        }
    }
    return $result;
}