2012-04-17 6 views
1

私はそれに色のテキストファイルを持っています。オレンジが選択されている場合のみ、スクリプトは真を返します。私は何が欠けているのですか?簡単なPHPスクリプトで変な返信をします

$filename="colors.txt"; 
$words=file($filename); 
shuffle($words); 
$word=$words[0]; 


if ($word == "yellow"){$pid = '558';} 
else if ($word == "red"){$pid = '557';} 
else if ($word == "purple"){$pid = '556';} 
else if ($word == "orange"){$pid = '555';} 
else if ($word == "green"){$pid = '554';} 
else if ($word == "brown"){$pid = '553';} 
else if ($word == "blue"){$pid = '552';} 
else {$pid = 'poop';} 

echo $word; 
echo $pid; 

colors.txt

red 
green 
blue 
yellow 
brown 
purple 
orange 

答えて

4

"オレンジ" のライン、ファイルの最後であるため、テキストファイルには、 "\ rを\ n" は行末を持っていません。

フォームfile()のドキュメント:FILE_IGNORE_NEW_LINESを指定使用されていない限り、あなたが行末をしたくない場合は、あなたはまだ()RTRIMを使用する必要があるので、結果の配列の各行には、行末が含まれます

プレゼント。

+0

みんなありがとう! –

+0

@ジャスティン、回答を書いた人は、あなたが1つを受け入れると感謝しています:-) – Dale

+0

笑、私はコードで迷ってしまった。答えを受け入れるために早くクリックしたとき、私は4分待たなければならないと言った。その後、私は時間の追跡を失った。 –

1

テキストファイルの各行には、キャリッジリターンと場合によっては改行も含まれています。変更:

$word=$words[0]; 

がために:

$word=trim($words[0]); 

は、任意の末尾または先頭のスペース/ CRSと、その後正常に動作するはずですあなたのIF文を削除する必要があります。

0

使用この代わりに:デフォルトでは

$words = file($filename, FILE_IGNORE_NEW_LINES); 

file()は、各配列項目の最後に新しい行を追加します。フラグFILE_IGNORE_NEW_LINESはこれが起こらないようにします。これを達成する別の方法は、各配列項目にrtrim()を使用することです。

0

は、あなたの行の向上:

$words=file($filename);

次へ:

$words=file($filename,FILE_IGNORE_NEW_LINES);

機能は、各配列要素に新しい行を追加しません。

PHP function file()

P.S:あなたは、あなたが期待する結果を得ることはありませんたびに、ちょうどあなたのプロセスに関与しているすべてのPHP関数のためのマニュアルを参照してください。たぶんあなたはそれのために半分のページを読まなければならないかもしれませんが、それでも時間は節約されます。

関連する問題