##記事の目的
今回は、改行や空行を無視してテキストファイルを処理するということについて、インターン中にチームメンバーに対しての情報共有のため書いています。
##共通のエラー
・なぜか入力した数値よりも先にFizzBazzが記入されてしまう
下記のコードが具体例です。これは処理後にFizzbazzが表示されてしまいます。
$str1 = "Fizz";
$str2 = "Buzz";
$num = $_POST["num"];
$filename="mission_1-27.txt";
$fp = fopen($filename,"a+");
fwrite($fp, $num.PHP_EOL);
fclose($fp);
echo "書き込み成功!<br>";
if(!empty($_POST["num"])||isset($_POST["num"])){
if(file_exists($filename)){
$numbers = file($filename,FILE_IGNORE_NEW_LINES);
foreach($numbers as $num){
if ((int)$num % 3 == 0 && (int)$num % 5 == 0) {
echo $str1.$str2;
echo "<br>";
} else if((int)$num % 3 == 0){
echo $str1;
echo "<br>";
} else if((int)$num % 5 == 0) {
echo $str2;
###エラーの原因
このエラーでは、txtファイル内の改行は無視して処理されているのですが、空文字は処理されてしまいます。
以下は上記のコードの一部分ですが、file()のところでフラグが改行についてしか指定されていないので、空文字はそのまま処理されてしまっていると思われます。
if(file_exists($filename)){
$numbers = file($filename,FILE_IGNORE_NEW_LINES);
~
}
なのでフラグの指定について理解を深めましょう!
file()、フラグ指定などで検索してみてください!