2016-07-08 108 views
0

這裏是我的功能:在PHP簡單的比較不工作

function checkForDuplicates($items, $checkitem) 
{ 
    $rows = explode("\n", $items); 
    foreach($rows as $item) 
    { 
     if($item === $checkitem) 
      return TRUE; 
    } 
    return FALSE; 
} 

我已經證實,其回報是準確和正常工作。 這裏就是調用該函數,我遇到一個問題:

$email = sanitizeInput($_POST['email']); 
$email = strtolower($email); 
$emails = file_get_contents('emails.txt'); 

if(checkForDuplicates($emails, $email) == FALSE); 
{ 
    $emailFile = fopen('emails.txt','a') or die ('Sorry. Subscriptions are disabled for the time being.'); 
    fwrite($emailFile, $email."\n"); 
    fclose($emailFile); 
} 

不管我怎麼輸入,並將其寫入文件兩種方式。我無法理解爲什麼這樣一個簡單的比較不起作用。

+1

'$ items'和$ checkitem'的一些實際樣本值會很有幫助。否則,在這裏沒有足夠的幫助你 –

+0

可能是換行相關。你可以嘗試做'if(trim($ item)=== $ checkitem)'並查看行爲是否改善。 – 1sloc

+0

我應該澄清,該功能正常工作,並返回正確的TRUE和FALSE值。所以,我已經縮小了它的功能實現的比較問題... – user3213722

回答

3

你的問題來自尾隨「;」這裏

if(checkForDuplicates($emails, $email) == FALSE); 

它歸結爲一個如果與一個空的陳述。

下面的塊(文件追加)始終執行,因爲它不是條件的一部分。

+0

刪除了分號,它的工作完美。謝謝! – user3213722