因此,我对PHP非常陌生,我正试图完成一些非常简单的任务。将文本文件导入数组,让foreach遍历该数组寻找值,如果找到值则打印值。
以下是我到目前为止尝试过的:
$testers = file('test.txt');
foreach ($testers as $test) {echo $test . "<br />";}这很好,每一行都是打印出来的。太完美了。然后我添加一个IF语句。
$testers = file('test.txt');
foreach ($testers as $test) {if ($test){echo $test . "<br />";}}同样工作正常,似乎正在返回数据。现在,如果我尝试添加一个操作符,它就会分崩离析。
$testers = file('test.txt');
foreach ($testers as $test) {if ($test == "One"){echo $test . "<br />";}}我应该说,文本文件中每一行都有数字,从“1”到“6”,我也尝试过:
$testers = file('test.txt');
foreach ($testers as $test) {if ($test === "One"){echo $test . "<br />";}}这个也没有归还任何东西..。
任何洞察力都会很棒!谢谢!
我到底错过了什么?为什么如果语句不返回我正在寻找的值呢?!
发布于 2014-04-12 10:40:44
您的问题在于,在默认情况下,file()将在每一行中包含换行符。因此,在平等问题上的比较将失败。
你可以使用:
$testers = file('test.txt', FILE_IGNORE_NEW_LINES);也就是说,添加标志,这样PHP就不会在结果数组项中包含换行符。
如果不想列出空行,则有相应的FILE_SKIP_EMPTY_LINES标志,因此:
$testers = file('test.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);发布于 2014-04-12 10:40:10
您应该使用stripos()进行检查,并在此之前执行array_filter从$testers数组中删除空条目。
密码..。
<?php
$testers = array_filter(file('test.txt'));
foreach ($testers as $test) {if (stripos($test,"One")!==false){echo $test . "<br />";}}发布于 2014-04-12 10:42:10
如果您想比较每一行是否等于另一行,请检查抽筋
如果要查看一行是否包含字符串,请检查strpos在这里输入链接描述。
对于抽筋者:
foreach ($testers as $test) {if (strcmp($test,"one")==0){echo $test . "<br />";}}对于strpos:
foreach ($testers as $test) {if (strpos($test,"one") !==false){echo $test . "<br />";}}https://stackoverflow.com/questions/23029248
复制相似问题