php
  • wordpress
  • if-statement
  • 2012-04-17 18 views 1 likes 
    1

    我有一個文本文件的顏色。如果選擇了橙色,該腳本僅返回true。我錯過了什麼?簡單的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

    Got it!多謝你們! – 2012-04-17 22:10:43

    +0

    @Justin,我相信寫回答的人會喜歡它,如果你接受:-) – Dale 2012-04-17 22:22:16

    +0

    大聲笑,我迷路了代碼。當我點擊更早接受答案時說,我不得不等待4分鐘。然後我失去了時間的蹤跡。 – 2012-04-17 22:51:56

    1

    您的文本文件中的每一行還包含回車符和可能的換行符。更改:

    $word=$words[0]; 
    

    是:

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

    應該刪除任何尾隨或前導空格/ CR和您的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函數。也許你必須閱讀半頁,但仍然可以節省時間。

    相關問題