2014-02-08 88 views
2

我有一個很奇怪的問題。如果聲明不觸發

這是我的代碼,因爲-是:

<?php 
    $cur = file_get_contents("./req.txt"); 
    if(($_POST['bid'] >= $cur + 0.25) & $_POST['contact'] !== '') 
    { 
     $fi2 = "./req.txt"; 
     file_put_contents($fi2, $_POST['bid']); 
     echo "<font color=\"red\" size=\"5\">Success</font>"; 
    } 
    else 
    { 
     echo "<font color=\"red\" size=\"5\">Error.</font>"; 
    } 
?> 

當它是這樣的,它工作正常。

但是,如果我改變elseif($_POST['bid'] >= $cur + 0.25)(被複制和粘貼以上),頁面加載罰款,並沒有運行file_put_contents,但它並沒有迴音Error。這是什麼代碼看起來像改變了:

<?php 
    $cur = file_get_contents("./req.txt"); 
    if(($_POST['bid'] >= $cur + 0.25) & $_POST['contact'] !== '') 
    { 
     $fi2 = "./req.txt"; 
     file_put_contents($fi2, $_POST['bid']); 
     echo "<font color=\"red\" size=\"5\">Success</font>"; 
    } 
    if($_POST['bid'] >= $cur + 0.25) 
    { 
     echo "<font color=\"red\" size=\"5\">Error.</font>"; 
    } 
?> 

我做錯了什麼?

+0

請發佈不起作用的代碼,而不是描述更改。 – Barmar

+2

它聽起來像你有一個語法錯誤,並且該頁面根本沒有執行。這是'if'後面的代碼可以防止'if'觸發的唯一方法。 – Barmar

+0

頁面加載正常。 CSS和html運行。我在底線上加了'echo「test」;',它工作正常。 – Frank

回答

4

如果$_POST['bid'] >= $cur + 0.25false,那麼你的代碼中的if將不會被執行。

第一段代碼將進入else,但第二段不會進入第二段if

+0

哎呀......感謝您指出這一點。總是愚蠢的錯誤哈哈。 – Frank

+0

當你說第一個版本「工作」時,我認爲你的意思是它迴應成功。 – Barmar

0

&是PHP中的按位和運算符,它的優先級高於!==運算符。嘗試用& &替換&。

+0

不錯,但是這將如何解釋他所看到的? – Barmar

+0

剛剛嘗試過,它仍在發生。 – Frank