我有一个带颜色的文本文件。如果选择了橙色,则脚本仅返回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
答案 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);
函数不会为每个数组元素添加新行。
P.S。:每次你没有得到你期望的结果时,只需检查你的过程中涉及的每个PHP函数的文档。也许你必须阅读半页,但是,你仍然可以节省时间。