テキストファイルから行を読み込んで「$line == “港区”」のような比較に使うときは、読み込んだ行に改行が含まれていないか、注意が必要です。次のような、file関数で取得したファイルのデータを1行ずつ処理するコードはうまくいきません。
○テキストファイル(test.txt)
港区
柏市
川崎市
<?php $data = file("test.txt"); foreach ($data as $line) { if ($line == "港区") { echo "東京"; } } ?>
この場合、ファイルから取得した行をそのまま値比較に使うのではなく、「rtrim($line)」として改行文字を削除した値と比較するなど、注意しましょう。
または、file関数の2番目のパラメータに「file(“test.txt”, FILE_IGNORE_NEW_LINES)」のようにFILE_IGNORE_NEW_LINESを指定して、改行を無視して行を読み込む方法もあります。
<?php $data = file("test.txt"); foreach ($data as $line) { if (rtrim($line) == "港区") { echo "東京"; } } ?>
○実行結果
東京
この例の「rtrim」は「trim」でも大丈夫です。
この原因の他に、if文による値の比較がうまくいかないときは、次の記事を参考に比較演算子「==」と「===」の違いを考えてみてください。
【関連記事】if文による値の比較がうまくいかないとき