1

我有一个带有颜色的文本文件。如果选择了橙色,脚本仅返回 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

4 回答 4

4

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

形成file()的文档:

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

于 2012-04-17T22:04:01.710 回答
1

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

$word=$words[0];

成为:

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

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

于 2012-04-17T22:04:39.423 回答
0

改用这个:

$words = file($filename, FILE_IGNORE_NEW_LINES);

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

于 2012-04-17T22:04:47.877 回答
0

改善您的生产线:

$words=file($filename);

到以下:

$words=file($filename,FILE_IGNORE_NEW_LINES);

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

PHP函数文件()

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

于 2012-04-17T22:08:13.663 回答