奇怪的回归与简单的PHP脚本

时间:2012-04-17 22:00:33

标签: php wordpress if-statement

我有一个带颜色的文本文件。如果选择了橙色,则脚本仅返回true。我错过了什么?

$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 个答案:

答案 0 :(得分:4)

“orange”行是文件中的最后一行,没有以“\ r \ n”结尾的行。

形成file()的文档:

  

结果数组中的每一行都包含行结尾,除非使用了FILE_IGNORE_NEW_LINES,因此如果您不希望行结束,则仍需要使用rtrim()。

答案 1 :(得分:1)

文本文件中的每一行还包含回车符和可能的换行符。变化:

$word=$words[0];

是:

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

应该删除任何尾随或前导空格/ CR,然后你的IF语句才能正常工作。

答案 2 :(得分:0)

请改用:

$words = file($filename, FILE_IGNORE_NEW_LINES);

默认情况下,file()会在每个数组项的末尾添加新行。标志FILE_IGNORE_NEW_LINES阻止了这种情况的发生。实现此目的的另一种方法是在每个数组项上使用rtrim()

答案 3 :(得分:0)

改善你的行:

$words=file($filename);

以下内容:

$words=file($filename,FILE_IGNORE_NEW_LINES);

函数不会为每个数组元素添加新行。

PHP function file()

P.S。:每次你没有得到你期望的结果时,只需检查你的过程中涉及的每个PHP函数的文档。也许你必须阅读半页,但是,你仍然可以节省时间。