我有一个文件,其中有一个数字(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.
知道为什么会这样吗?
答案 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)