2012-01-18 15 views
0

は、私はファイルを持っており、例えば、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.

任意のアイデアですなぜこれはそうですか?

+0

はfgetsの下にファイル名( "file.txtは" は、R +)だけでなく、番号を渡した場合。 –

+0

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"; –

+1

@ sh4nx0r - すべてのエラーが発生するので、fgets()の構文を読むことをお勧めします - http://www.php.net/manual/en/function.fgets.php –

答えて

1

コードの残りの部分を見なければ、私は$numberは、有効なファイルハンドルではありませんので、fgets()リターンが0に等しくなりFALSEブールからだと推測すると思います。

+0

私はこれに正直に同意しません。最初のスニペットでは、 '$ x'の結果を直接出力し、" 1 "を表示します。 '$ number'が有効なハンドルでない場合、' $ x'はFALSEになります。これは実際にエコーされたときに文字を出力しません。出力されている(そしてエラーメッセージでいっぱいの画面ではない)ため、fgetsが適切に実行されたと仮定できます。 –

2

fgetsを使用してファイルから何かを読み取った場合、結果の文字列には改行が含まれます。 (通常のテキストファイルに1つ存在するので。)

はどちらかtrimを使用します。

$x = trim(fgets(STDIN)); 

かの型キャスト:デバッグのため

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

常に期待につながらない変数にvar_dump()を使用結果。

+0

ありがとう、それは問題だった:) – Chuck

1

fgetsはファイルから改行を付けたまま行を取得します。ものすごく混乱する可能性があります。以下試してください:使用して==の代わり===あなたが値型の両方が一致することを確認するには、文字列が「1」の数1に等しいと考えられていることを意味していること

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

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

注意、 ===を使用してください。 integrerとして

0

扱う文字列:

((int型)$ X == $ yを)