来自文本文件的PHP foreach循环

来自文本文件的PHP foreach循环,php,foreach,Php,Foreach,文本文件中的foreach循环有问题。我有一个目录树,这些目录的列表在一个文本文件中,我想对照列表检查目录树,如果缺少任何目录,则回显 我遇到的问题是,我看不到新行的帐户,因此如果文件有一行,那么它返回它存在,但是如果文件有两行,它返回第一行作为缺少,第二行作为存在,即使它在文件中是相同的条目两次-请参阅下面的代码以获得澄清 <?php $logFile = 'LogFile.txt'; $rootDirectory = 'C:\testdir\\'; $verificatio

文本文件中的foreach循环有问题。我有一个目录树,这些目录的列表在一个文本文件中,我想对照列表检查目录树,如果缺少任何目录,则回显

我遇到的问题是,我看不到新行的帐户,因此如果文件有一行,那么它返回它存在,但是如果文件有两行,它返回第一行作为缺少,第二行作为存在,即使它在文件中是相同的条目两次-请参阅下面的代码以获得澄清

<?php
  $logFile = 'LogFile.txt';
  $rootDirectory = 'C:\testdir\\';
  $verificationFile = 'verificationfiles/directoryverification.txt';
  $verificationContents = file($verificationFile);
  $fh = fopen($logFile,'a') or die("can't open file");
  $new_line = "\r\n";
  
 foreach($verificationContents as $directoryName) {
    $subDirectory = $rootDirectory.$directoryName;
    echo "$subDirectory <br />";
     
    
    if (file_exists($subDirectory)) {
     echo "$subDirectory Exists <br />";
    } else {
    echo "$subDirectory Does Not Exist <br />";
     $libverificationfailed = 'failed';
    fwrite($fh, "$subDirectory Not Found");
    fwrite($fh, $new_line);
    }
    
    
 }
?>
页面会发出回声

C:\testdir\subdir1
C:\testdir\subdir1不存在 C:\testdir\subdir2
C:\testdir\subdir2存在

因此,如果文本文件中的数据后面有新行,则代码无法正确读取。我希望这是有道理的,希望有人能帮上忙

您好,

试试这个

    $rootDirectory = 'C:\testdir\\';
    $verificationFile = 'verificationfiles/directoryverification.txt';
    $file = new \SplFileObject($verificationFile, 'r');
    $file->setFlags(\SplFileObject::SKIP_EMPTY);

    while ( $dirname = $file->fgets() )
    {
        $dirname = $rootDirectory . trim($dirname);

        if ( !file_exists($dirname) )
        {
            echo sprintf("direcrory %s does not exist\n", $dirname); 
            continue;
        }

        echo sprintf("direcrory %s exists\n", $dirname); 
    }
谢谢rickdenhaan

$subDirectory = rtrim($subDirectory);

就在if语句对其排序之前。

From:注意:结果数组中的每一行都将包含行尾,除非使用了FILE\u IGNORE\u NEW\u行,因此如果不希望出现行尾,您仍然需要使用。谢谢rickdenhaan,$subDirectory=rtrim($subDirectory);就在if语句对其进行排序之前,我如何设置要检查的目录作为变量?在我的目录中,我正在搜索的目录被设置为C testdir,但这需要不时地更改
$subDirectory = rtrim($subDirectory);