如果foreach内部总是返回false

时间:2018-03-27 02:04:06

标签: php if-statement foreach

我正在研究一组例程,这些例程将根据已知的演员列表检查访问者的IP地址。 IF语句总是返回一个故事,即使我将ip设置为知道错误的ip。任何帮助将不胜感激。

$toratora="NO DNSBL";

$filename = 'converted.txt';
$contents = file($filename);

foreach($contents as $line):
$newline = ("$line "); //Add a space after each ip.
//If (int) is in front of $newline & $ip, then always true.
//If (int) is not in front of $newline & $ip, then always false.
if ($line == $ip): 
$toratora="YES DNSBL";
endif; 
endforeach;

1 个答案:

答案 0 :(得分:0)

问题在于您的$ line值,如果您查看file()的手册,您会看到

  

数组的每个元素对应于文件中的一行,对应于   新线仍然附加

由于您的$ ip变量(我猜测)最后没有换行符,因此比较将失败。正如评论中所建议的那样,你应该削减$ line和$ ip ie。

if (trim($line) == trim($ip)): 
$toratora="YES DNSBL";
endif;