は、私はファイルを持っており、例えば、1の番号(x)は、それには、存在する場合:PHP間違った出力
$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.
任意のアイデアですなぜこれはそうですか?
は、私はファイルを持っており、例えば、1の番号(x)は、それには、存在する場合:PHP間違った出力
$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.
任意のアイデアですなぜこれはそうですか?
コードの残りの部分を見なければ、私は$number
は、有効なファイルハンドルではありませんので、fgets()
リターンが0
に等しくなりFALSE
ブールからだと推測すると思います。
私はこれに正直に同意しません。最初のスニペットでは、 '$ x'の結果を直接出力し、" 1 "を表示します。 '$ number'が有効なハンドルでない場合、' $ x'はFALSEになります。これは実際にエコーされたときに文字を出力しません。出力されている(そしてエラーメッセージでいっぱいの画面ではない)ため、fgetsが適切に実行されたと仮定できます。 –
fgets
を使用してファイルから何かを読み取った場合、結果の文字列には改行が含まれます。 (通常のテキストファイルに1つ存在するので。)
はどちらかtrim
を使用します。
$x = trim(fgets(STDIN));
かの型キャスト:デバッグのため
$x = intval(fgets($fh));
常に期待につながらない変数にvar_dump()
を使用結果。
ありがとう、それは問題だった:) – Chuck
fgetsはファイルから改行を付けたまま行を取得します。ものすごく混乱する可能性があります。以下試してください:使用して==
の代わり===
あなたが値と型の両方が一致することを確認するには、文字列が「1」の数1に等しいと考えられていることを意味していること
$x = intval(fgets($number));
$y = 1;
if ($x == $y)
echo "O.K"; // Removed)
else
echo "not O.K"; // Removed)
注意、 ===
を使用してください。 integrerとして
扱う文字列:
((int型)$ X == $ yを)
はfgetsの下にファイル名( "file.txtは" は、R +)だけでなく、番号を渡した場合。 –
Do $ x = fgets($ number); echo '$ x ='; var_dump($ x); echo ''、PHP_EOL; $ y = 1; echo '$ y ='; var_dump($ y); echo ''、PHP_EOL; if($ x == $ y)echo "O.K"; else echo "not O.K"; –
@ sh4nx0r - すべてのエラーが発生するので、fgets()の構文を読むことをお勧めします - http://www.php.net/manual/en/function.fgets.php –