PHP:如何创建一个文件数组的数组(又名scandir数组)

时间:2013-03-11 18:40:45

标签: php

我想遍历4个路径,并且每个路径存储特定路径的文件在数组中。原因是,我想在数据库中插入每个文件标题和文​​件路径。

所以:

$COMICS_path = array('./images/Comics/Charts/', './images/Comics/Life/', './images/Comics/Misc/', './images/Comics/Office/', './images/Comics/Political/');

$COMICS_files = array(scandir('./images/Comics/Charts/'), scandir('./images/Comics/Life/'), scandir('./images/Comics/Misc/'), scandir('./images/Comics/Office/'), scandir('./images/Comics/Political/'));

$COMICS_path似乎输出了正确的数组。

但是,当我期待以下内容时,$ COMICS_files只输出“ARRAY”:

$COMICS_files = (file1.png, file2.png, file3.png, ... file n.png)

这可能吗?如果没有,任何人都可以指导我循环浏览几个文件夹并检索每个文件的最佳方法吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

$COMICS_files = array();
foreach($COMICS_path as $path)
    $COMICS_files = array_merge($COMICS_files, scandir($path));
var_dump($COMICS_files);

由于scandir()返回一个数组,你必须将它们合并为一个大数组。

答案 1 :(得分:1)

它正在输出一个二维数组,因为scandir返回一个数组。

所以$ COMICS_files [0]将是(afile1.png,afile2.png,...)和$ COMICS_FILES [1]将是(bfile2.png,bfile2.png)

如果您希望将所有这些文件放在一个数组中,您应该这样做

$COMICS_path = array('./images/Comics/Charts/', './images/Comics/Life/', './images/Comics/Misc/', './images/Comics/Office/', './images/Comics/Political/');
$COMICS_files = array();

$COMICS_path_sz = count($COMICS_path);
for ($i = 0; $i < $COMICS_path_sz; ++$i) {
    $tmp_arr = scandir($COMICS_path[i]);
    if ($tmp_arr !== FALSE) {
        $COMICS_files = array_merge($COMICS_files, $tmp_arr);
    }
}

答案 2 :(得分:1)

首先,我们需要弄清楚你所指的“输出”是什么。如果你参考echo的结果,那么预期的结果是“ARRAY”。

其次,正如您的“输出”所述,您有一个数组。您需要遍历数组并插入记录。

更优雅的方法是生成所有插入并立即将它们发送到数据库服务器,因为应用程序服务器和数据库服务器之间的通信很昂贵,也就是说,这需要时间。