Php 使用循环从多个文件夹中读取文本文件

Php 使用循环从多个文件夹中读取文本文件,php,Php,我正在创建一个php页面,它将使用loop从目录中的每个文件夹中读取某个.txt文件。我的目录结构如下所示: 根/ Folder1-->data.txt(值为“1”) Folder2-->data.txt(值为“2”) foldernames.txt(每行都有值“Folder1”和“Folder2”。) readfolderdata.php readfolderdata.php <?php $file = "foldernames.txt"; if ( file_exists( $fi

我正在创建一个php页面,它将使用loop从目录中的每个文件夹中读取某个.txt文件。我的目录结构如下所示:

根/

  • Folder1-->data.txt(值为“1”)
  • Folder2-->data.txt(值为“2”)
  • foldernames.txt(每行都有值“Folder1”和“Folder2”。)
  • readfolderdata.php
readfolderdata.php

<?php
$file = "foldernames.txt";
if ( file_exists( $file )) {
$page = join("",file("$file"));
$folder = explode("\n", $page);
for($x=0;$x<count($folder);$x++){

    if($folder[$x]!=''){
        $txtfile = $folder[$x].'/data.txt';
        $handle = fopen($txtfile, 'r');
        $data = fread($handle,filesize($txtfile));
        fclose($handle);
        echo $folder[$x]."<br>".$data; 
        }
}
?>

现在,上面的代码只从第二个文件夹Folder2读取data.txt。从第一个文件夹Folder1读取data.txt时出现错误“无法打开流”,尽管Folder1中存在data.txt。如果我从foldernames.txt中删除“Folder2”,它会正常工作,当有2个或更多文件夹时会发生错误

$file = "foldernames.txt";
$lines = file($file, FILE_IGNORE_NEW_LINES);
foreach($lines as $line) // Look through lines, $line is now folder name
{
    $value = file_get_contents($line."/data.txt");
    // Do whatever you want with your value, example echo:
    echo $value;
}
此代码回显所有data.txt值


此代码回显所有data.txt值。

print\r$folder可以帮助print\r显示一个数组“array([0]=>Folder1[1]=>Folder2)”,这意味着读取foldernames.txt没有问题,但是从第一个文件夹访问data.txt文件会有问题。print\r$folder可以帮助print\r显示一个数组(“array”[0]=>Folder1[1]=>Folder2)”,这意味着读取foldernames.txt没有问题,但是从第一个文件夹访问data.txt文件会有问题。