PHP - 如果在foreach中声明

use*_*454 0 php

所以我是PHP的新手,我正在努力完成一些非常简单的事情.将文本文件导入到数组中,让foreach遍历该数组以查找值,并在找到时打印该值.

这是我到目前为止所尝试的:

$testers = file('test.txt');
foreach ($testers as $test) {echo $test . "<br />";}
Run Code Online (Sandbox Code Playgroud)

这很好用,每行都打印出来.完善.然后我添加一个IF语句.

$testers = file('test.txt');
foreach ($testers as $test) {if ($test){echo $test . "<br />";}}
Run Code Online (Sandbox Code Playgroud)

工作正常,似乎是返回数据.现在,如果我尝试添加一个运算符,它就会崩溃.

$testers = file('test.txt');
foreach ($testers as $test) {if ($test == "One"){echo $test . "<br />";}}
Run Code Online (Sandbox Code Playgroud)

我应该说,文本文件中包含从"一"到"六"的每一行的数字我也尝试过:

$testers = file('test.txt');
foreach ($testers as $test) {if ($test === "One"){echo $test . "<br />";}}
Run Code Online (Sandbox Code Playgroud)

这也没有回复......

任何见解都会很棒!谢谢!

我到底错过了什么?为什么这个if语句没有返回我正在寻找的值?!

Alm*_* Do 5

您的问题是因为file()默认情况下会在每行中包含换行符.因此,平等的比较将失败.

你可以使用:

$testers = file('test.txt', FILE_IGNORE_NEW_LINES);
Run Code Online (Sandbox Code Playgroud)

即添加标志,以便PHP不会在生成的数组项中包含换行符.

如果你不想列出空行,那就有相应的FILE_SKIP_EMPTY_LINES标志,所以:

$testers = file('test.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
Run Code Online (Sandbox Code Playgroud)