【问题标题】:strange return with simple php script简单的 php 脚本的奇怪返回
【发布时间】:2012-04-17 22:00:33
【问题描述】:

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

【问题讨论】:

    标签: php wordpress if-statement


    【解决方案1】:

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

    形成file()的文档:

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

    【讨论】:

    • @Justin,我相信如果你接受一个答案,写答案的人会很感激:-)
    • 大声笑,我在代码中迷路了。当我早些时候点击接受答案时,它说我必须等待 4 分钟。然后我忘记了时间。
    【解决方案2】:

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

    $word=$words[0];
    

    成为:

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

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

    【讨论】:

      【解决方案3】:

      改用这个:

      $words = file($filename, FILE_IGNORE_NEW_LINES);
      

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

      【讨论】:

        【解决方案4】:

        改善你的生产线:

        $words=file($filename);

        到以下:

        $words=file($filename,FILE_IGNORE_NEW_LINES);

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

        PHP function file()

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

        【讨论】:

          猜你喜欢
          • 2023-03-20
          • 2016-11-16
          • 2013-04-26
          • 2014-07-28
          • 2017-04-10
          • 1970-01-01
          • 1970-01-01
          • 2018-11-23
          • 1970-01-01
          相关资源
          最近更新 更多