Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
foreach中的PHP-If语句_Php - Fatal编程技术网

foreach中的PHP-If语句

foreach中的PHP-If语句,php,Php,所以我是PHP的新手,正在尝试完成一些非常简单的事情。将文本文件导入数组,让foreach遍历该数组以查找值,如果找到,则打印该值 以下是我迄今为止所尝试的: $testers = file('test.txt'); foreach ($testers as $test) {echo $test . "<br />";} $testers=file('test.txt'); foreach($testers作为$test){echo$test.“”;} 这很好,每行都打印出来了。

所以我是PHP的新手,正在尝试完成一些非常简单的事情。将文本文件导入数组,让foreach遍历该数组以查找值,如果找到,则打印该值

以下是我迄今为止所尝试的:

$testers = file('test.txt');
foreach ($testers as $test) {echo $test . "<br />";}
$testers=file('test.txt');
foreach($testers作为$test){echo$test.“
”;}
这很好,每行都打印出来了。完美的 然后我添加一个IF语句

$testers = file('test.txt');
foreach ($testers as $test) {if ($test){echo $test . "<br />";}}
$testers=file('test.txt');
foreach($testers作为$test){if($test){echo$test.
“;}
工作正常,似乎正在返回数据。现在,如果我尝试添加一个操作符,它就会崩溃

$testers = file('test.txt');
foreach ($testers as $test) {if ($test == "One"){echo $test . "<br />";}}
$testers=file('test.txt');
foreach($testers作为$test){if($test==“One”){echo$test.
“;}
应该说,文本文件中每行都有从“1”到“6”的数字 我还尝试:

$testers = file('test.txt');
foreach ($testers as $test) {if ($test === "One"){echo $test . "<br />";}}
$testers=file('test.txt');
foreach($testers作为$test){if($test==“One”){echo$test.
“;}
这也没有什么回报

任何洞察都会很棒!谢谢

我到底错过了什么?为什么这个if语句没有返回我要查找的值

您应该改为使用进行检查,并在此之前执行一次检查,以从
$testers
数组中删除空条目

代码。。。
您的问题是因为默认情况下,每行都会包含换行符。因此,关于平等的比较将失败

您可以使用:

$testers = file('test.txt', FILE_IGNORE_NEW_LINES);
i、 e.添加标志,使PHP不会在结果数组项中包含换行符

如果您不想列出空行,则会有相应的
FILE\u SKIP\u empty\u lines
标志,因此:

$testers = file('test.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

如果要比较每一行是否与另一行相等,请检查

如果要查看行是否包含字符串,请检查strpos

对于strcmp:

foreach ($testers as $test) {if (strcmp($test,"one")==0){echo $test . "<br />";}}
foreach($testers作为$test){if(strcmp($test,“one”)==0{echo$test.
“;}
对于STRPO:

foreach ($testers as $test) {if (strpos($test,"one") !==false){echo $test . "<br />";}}
foreach($testers作为$test){if(strpos($test,“one”)!==false){echo$test.
“;}
Try
trim($test)==“One”
谢谢,虽然其他建议也都是有效的,但我喜欢这个建议,因为它很简单,切中要害,并解释了发生的事情。
foreach ($testers as $test) {if (strpos($test,"one") !==false){echo $test . "<br />";}}