0

我想遍历 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)

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

谢谢!

4

3 回答 3

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

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

于 2013-03-11T18:46:43.800 回答
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);
    }
}
于 2013-03-11T18:53:08.360 回答
1

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

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

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

于 2013-03-11T18:53:13.687 回答