我有一個if語句,我想控制與一個領域需要輸入,他們必須選擇其他2個選擇之一。PHP運營商如果陳述'和'和'或'
if(test1 && test || test3){
//Something here
}
我應該做這樣的:
if(test1 && (test2 || test3)){
//do stuff
}
我怎麼會去這樣做。我不能換我的頭周圍的邏輯...
我有一個if語句,我想控制與一個領域需要輸入,他們必須選擇其他2個選擇之一。PHP運營商如果陳述'和'和'或'
if(test1 && test || test3){
//Something here
}
我應該做這樣的:
if(test1 && (test2 || test3)){
//do stuff
}
我怎麼會去這樣做。我不能換我的頭周圍的邏輯...
if ($requiredField && ($optional1 || $optional2)) {
/* Do something */
}
爲/* Do something */
位的代碼被執行,如果語句,以評估TRUE
。
這意味着,$requiredField
必須是TRUE
,因此必須是($optional1 || $optional2)
。
對於$requiredField
是TRUE
,只需要在要填充 - 和第二部分:($optional1 || $optional2)
要麼optional1
或optional2
會做到這一點。
編輯:
重讀問題後,似乎我可能會誤解你了。如果用戶必須輸入一個特定的信息,並且必須選擇一個(不是兩個)在兩個選項 - 然後應該使用以下。
if ($requiredField && ($optional1^$optional2)) {
/* Do something */
}
這意味着$optional1
或$optional2
必須填寫 - 但不是他們兩個。
從它的聲音,你希望後者:
if ($test1 && ($test2 || $test3)){
//do stuff
}
把它看成兩個條件需要得到滿足。這給你這兩個條件。第二個條件恰好是另一個條件。然而,您發佈的第一個選項卻恰恰相反,因爲只要$test3
爲真就可以執行
您可以使用單個if語句嵌套if語句,並帶有附加括號。
if(test1 && (test2 || test3)){
//do stuff
}
test1 && (test2 || test3)
很容易從第一處瞭解到 - 選擇TEST1 & &(測試2 || TEST3)是指一個最後兩個。非常清楚。
test1 && test || test3
- 似乎並不正確:
test1 = false
test2 = false
test3 = true
false && false || true = true
實際上並不符合您的標準。
你的邏輯是正確的,但你的sintax沒有,你應該比較顯示的變量的值,或者簡單地忽略它們,因爲你試圖比較它們,因爲它們是TRUE。
$test1=true;
$test2=true;
$test3=false;
if($test1==true && ($test2==true || $test3==true){ echo "YES";}
這將輸出YES。
我想你錯過了一點邏輯 – 2012-01-30 23:23:37
...他們必須選擇其他2個選擇
我只是拋出一個猜測在這裏之一。如果你真的想確保一個,但只有兩個其他選項被選中,那麼你需要xor
:
if ($required AND ($and_either XOR $or_other)) {
請仔細閱讀[運算符優先級(http://php.net/manual/en/ language.operators.precedence.php) – Phil 2012-01-30 23:18:59