2012-03-21 38 views
-1

鑑於以下變量:邏輯運算符的問題

$field1; 
$field2; 
$field3; 
$field4; 
$field5; 

如何使用邏輯運算符,使用戶必須填寫在欄:1,2,3或任一字段1,2,4,5 。如果用戶沒有執行以下任一操作,那麼我想提供錯誤必填字段不完整。

我曾嘗試:

if ((!$field1 | !$field2 |!$field3) | (!$field1 | !$field2 |!$field4|!$field5)) 
    $errors[] = 'You did not complete all of the required fields.'; 
+0

的'|'運算符是[位或(http://php.net/manual/en/language.operators .bitwise.php) - 不是你想要的。使用'||'作爲邏輯或。 – benesch 2012-03-21 02:25:10

回答

1
if (! 
    // Exactly 1,2,3 are filled in (not 4, 5) 
    (!empty($field1) && !empty($field2) && !empty($field3) && empty($field4) && empty($field5)) 
    // or Exactly 1,2,4,5 are filled in (not 3) 
    && !(!empty($field1) && !empty($field2) && !empty($field4) && !empty($field5) && empty($field3)) 
) { 
    // print error 
} 
+0

這是否也使得如果用戶只填寫字段1,它會給出錯誤? – Anonymous 2012-03-21 02:25:32

+0

@匿名是的,那是我對你的要求的理解。 – 2012-03-21 02:28:07

+0

它的工作原理。謝謝! – Anonymous 2012-03-21 02:35:14

1

嘗試:

if (!empty($field1) && !empty($field2) && !empty($field3)) { 
    //process 
} else if (!empty($field1) && !empty($field2) && !empty($field4) && !empty($field5)) { 
    //process 
} else { 
    $errors[] = 'You did not complete all of the required fields.'; 
} 

或者,要求沒有額外的字段用於給定的選項填入:

if (!empty($field1) && !empty($field2) && !empty($field3) && 
    empty($field4) && empty($field5)) { 
    //process 
} else if (!empty($field1) && !empty($field2) && !empty($field4) && !empty($field5) && 
    empty($field3)) { 
    //process 
} else { 
    $errors[] = 'You did not complete all of the required fields.'; 
} 
0

我我確信$fields是通訊來自荷蘭國際集團,但下面可能做的伎倆:

if (!(isset($field1) && isset($field2) && isset($field3)) || !(isset($field1) && isset($field2) && isset($field3) && isset($field4)){ 
    //Set the error 
} 
1

a = not empty $field1, b = not empty $field2, ..., e = not empty $field5

你想

​​

在PHP中:

if(!empty($field1) && !empty($field2) && 
    (!empty($field3) || (!empty($field4) && !empty($field5)) 
) { 
    // process 
} else { 
    // error 
} 

如果考慮0作爲有效值使用用代替empty

終於可以使用我在學校學到的那些代數。

+0

我也會試一試。謝謝! – Anonymous 2012-03-21 02:37:25

0

我偶爾會做一些像簡單的驗證下,如本

$fields = array('field1', 'field2', 'field3', 'field4', 'field5'); 

foreach($fields as $field) { 
    if(!isset($_POST[$field]) || strlen(trim($_POST[$field])) == 0) { 
     // set error message 
    } 
}