2013-12-13 35 views
0

我是一名有經驗的程序員,但我不是PHP開發人員。我被要求排除以下代碼的故障,但看不到問題所在。這個if語句的工作原理:Stuck疑難解答覆合IF聲明

<?php 
    if ($ice_cream_social == 'yes') { 
     $registration_price = "58.00"; 
    } 
?> 

然而,問題的頁面需要一些複合IF測試語句如果表單元素都被檢查,並相應地調整價格。此代碼不能正常工作,它沒有給出一個錯誤 - 但如果不執行:

<?php 
    if ($ice_cream_social == 'yes' AND $registration_type == 'Banquet and Conference') { 
     $registration_price = "78.00"; 
?> 

使用的開發工具,我已經驗證領域正在從HTML傳遞的表單,代碼有變量名稱和值拼寫正確,我可以成功測試任何ONE變量的值。看起來,當使用上面所示的語法添加第二個或第三個測試時,測試失敗並且IF不運行。基於我對PHP的語法和一些Google搜索的有限理解,代碼看起來對我來說是正確的(並且不會產生任何錯誤),但我想我錯過了爲什麼這不起作用。

有人可以告訴我,如果我錯過了我的代碼示例中明顯會導致IF不運行的東西嗎?我沒有包括更多的代碼,因爲這是一個凌亂的一套包括:)

謝謝!

+1

** 1.''var_dump()''$ ice_cream_social'和$ $ registration_type'的值並查看它輸出的內容。 ** 2。[使用'==='而不是'==']是一個好主意(http://stackoverflow.com/a/2063500/1438393)。 ** 3。**我建議使用['&&'而不是'AND'](http://stackoverflow.com/a/11861068/1438393)。 –

+0

我會檢查值,並確保沒有空白導致邏輯失敗。你可以像前面提到的那樣使用var_dump來獲取封裝值以及字符串長度並進行比較。如果空白是一個問題,你可以使用trim()來消除它。 – phpisuber01

+0

嗨阿馬爾 - 我嘗試了所有3個建議。變量的轉儲顯示它們應該正確匹配並且檢查應該通過。我也切換到&&和三重平等,我知道測試值和類型匹配。但是我仍然沒有得到IF來執行。任何其他想法? – red4d

回答

1

它看起來像我的elseif你沒有一個合乎邏輯的檢查,所以您可能需要將其更改爲else或添加檢查(如果這是你的意圖)elseif($registration_price>0)

我用這個代碼測試:

<?php 
$registration_price = ''; 
$ice_cream_social = 'yes'; 
//$ice_cream_social = 'no'; 
$registration_type = 'Banquet and Conference'; 
//$registration_type = 'Something else'; 

if ($ice_cream_social == 'yes') { 
    $registration_price = "58.00"; 
} else { 
    $registration_price = "not defined"; 
}   
echo $registration_price; 

if ($ice_cream_social == 'yes' && $registration_type == 'Banquet and Conference') { 
    $registration_price = "78.00"; 
} elseif(1 > 0) { 
    $registration_price = "1 million dolars!"; 
} else { 
    $registration_price = "not defined"; 
} 

echo $registration_price; 
+0

...或者只是使用'else' – hek2mgl

+0

這太脆弱了,如果你只是在沒有無條件'else的情況下使用'elseif',你需要用適當的默認值初始化'$ registration_price'。否則,如果條件不匹配,你會得到'未定義符號'錯誤 – hek2mgl

+0

@ hek2mgl現在好嗎? – DrCord