PHP如果输出错误

时间:2012-01-18 19:50:02

标签: php file-io

我有一个文件,其中有一个数字(x),例如1:

$x = fgets($number);
echo $x;

1是输出

现在我想将这个数字与另一个数字进行比较:

$x = fgets($number);
$y = 1;
if ($x == $y)
  echo "O.K";
else
  echo "not O.K";

但输出为not O.K.

知道为什么会这样吗?

4 个答案:

答案 0 :(得分:2)

如果您使用fgets从文件中读取内容,则生成的字符串将包含尾随换行符。 (因为通常有一个用于文本文件。)

使用trim

$x = trim(fgets(STDIN));

或类型转换:

$x = intval(fgets($fh));

对于调试,总是对不会导致预期结果的变量使用var_dump()

答案 1 :(得分:1)

在没有看到其余代码的情况下,我猜它是因为$number不是有效的文件句柄,因此fgets()返回boolean FALSE,它等于{{ 1}}。

答案 2 :(得分:1)

fgets从文件中抓取一行,但仍然附加换行符。很可能会搞砸事情。请尝试以下方法:

$x = intval( fgets($number) );
$y = 1;
if ($x == $y)
  echo "O.K";  // Removed )

else
  echo "not O.K";  // Removed )

请注意,使用==代替===表示字符串“1”被视为等于数字1.如果要确保值类型匹配,使用===

答案 3 :(得分:0)

将字符串视为整数:

if((int)$ x == $ y)