テキストファイルのforeachループに問題があります。私はディレクトリツリーを持っていて、これらのディレクトリのリストはテキストファイルにあります。ツリーをリストと照合して、ディレクトリがない場合はエコーします。PHP foreachループ(テキストファイルから)
問題は、私は新しい行のアカウントを見ることができないので、ファイルに1行があればそれが存在すると返しますが、ファイルに2行があればまず、それは同じエントリがファイルに二回だ場合でも、不足していると、既存のように二通り - 明確
ので<?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);
}
}
?>
のために以下のコードを参照して、例として、ルートディレクトリには、2つのサブディレクトリ、subdir1およびsubdir2を持っています。
directoryverification.txt
subdir1
subdir2
とページエコー
C:\ TESTDIR \ subdir1
C:\ TESTDIR \ subdir1存在しない C:\ TESTDIR \ subdir2
C:¥testdir¥subdir2存在する
テキストファイル内のデータの後に改行があると、コードが正しく読み込まれません。私はこれが意味を成し、誰かが助けることを望んでいる。
に関して、
から:**注:** FILE_IGNORE_NEW_LINES **を使用していない限り、結果として得られる配列の各行に行末が含まれます。行の終わりが表示されないようにするには、[rtrim()](http://php.net/rtrim)を使用する必要があります。 – rickdenhaan
ありがとうございましたrickdenhaan、 $ subDirectory = rtrim($ subDirectory); if文の直前にソートされています。 –