首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP - foreach中的If语句

PHP - foreach中的If语句
EN

Stack Overflow用户
提问于 2014-04-12 10:37:06
回答 3查看 83关注 0票数 0

因此,我对PHP非常陌生,我正试图完成一些非常简单的任务。将文本文件导入数组,让foreach遍历该数组寻找值,如果找到值则打印值。

以下是我到目前为止尝试过的:

代码语言:javascript
复制
$testers = file('test.txt');
foreach ($testers as $test) {echo $test . "<br />";}

这很好,每一行都是打印出来的。太完美了。然后我添加一个IF语句。

代码语言:javascript
复制
$testers = file('test.txt');
foreach ($testers as $test) {if ($test){echo $test . "<br />";}}

同样工作正常,似乎正在返回数据。现在,如果我尝试添加一个操作符,它就会分崩离析。

代码语言:javascript
复制
$testers = file('test.txt');
foreach ($testers as $test) {if ($test == "One"){echo $test . "<br />";}}

我应该说,文本文件中每一行都有数字,从“1”到“6”,我也尝试过:

代码语言:javascript
复制
$testers = file('test.txt');
foreach ($testers as $test) {if ($test === "One"){echo $test . "<br />";}}

这个也没有归还任何东西..。

任何洞察力都会很棒!谢谢!

我到底错过了什么?为什么如果语句不返回我正在寻找的值呢?!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-04-12 10:40:44

您的问题在于,在默认情况下,file()将在每一行中包含换行符。因此,在平等问题上的比较将失败。

你可以使用:

代码语言:javascript
复制
$testers = file('test.txt', FILE_IGNORE_NEW_LINES);

也就是说,添加标志,这样PHP就不会在结果数组项中包含换行符。

如果不想列出空行,则有相应的FILE_SKIP_EMPTY_LINES标志,因此:

代码语言:javascript
复制
$testers = file('test.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
票数 5
EN

Stack Overflow用户

发布于 2014-04-12 10:40:10

您应该使用stripos()进行检查,并在此之前执行array_filter$testers数组中删除空条目。

密码..。

代码语言:javascript
复制
<?php
$testers = array_filter(file('test.txt'));
foreach ($testers as $test) {if (stripos($test,"One")!==false){echo $test . "<br />";}}
票数 1
EN

Stack Overflow用户

发布于 2014-04-12 10:42:10

如果您想比较每一行是否等于另一行,请检查抽筋

如果要查看一行是否包含字符串,请检查strpos在这里输入链接描述

对于抽筋者:

代码语言:javascript
复制
foreach ($testers as $test) {if (strcmp($test,"one")==0){echo $test . "<br />";}}

对于strpos:

代码语言:javascript
复制
foreach ($testers as $test) {if (strpos($test,"one") !==false){echo $test . "<br />";}}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23029248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档