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