2015-10-01 40 views
0

我有一個困惑,這裏有什麼問題?如果A & B或C設置應該打印是的,否則它應該打印錯誤消息PHP與OR條件與否如果

$a = 1; 
$b = 2; 
$c = null; 

if ((is_null($a) && is_null($b)) || is_null($c)) { 
    echo 'A and B or C cannot be blank.'; 
} 
else 
    echo 'yes'; 

這裏我有一個&乙分配,但仍以其印刷「A和B或C不能爲空。」

使其更清楚。 A =名字,B =姓氏,C =電子郵件。所以用戶應該提供名字和姓氏,否則電子郵件。

+1

邏輯當前是:如果'$ a'和'$ b'爲NULL,或者如果'$ c'爲NULL,則輸入。它正在做它假設的事情。 – Epodax

+0

@Epodax,但在我的acse $ a和$ b中設置爲1和2,它們不爲空。 – dev1234

+0

整個if子句被讀取/檢查,而不僅僅是第一部分。 – Epodax

回答

5

你應該這樣做以下方式:

$a = 1; 
$b = 2; 
$c = null; 

if ((!is_null($a) && !is_null($b)) || !is_null($c)) { 
    echo 'yes'; 
} 
else 
{ 
    echo 'A and B or C cannot be blank.'; 
} 

更新:

if ((is_null($a) || is_null($b)) && is_null($c)) { 
    echo 'A and B or C cannot be blank.'; 
} 
+0

其失敗時,我分配這些。 $ a = null; $ b = 1; $ c = 3;我已經定義了c,所以它應該說是,但它說錯誤。 – dev1234

+0

檢查更新的問題 – dev1234

+0

你可以寫這隻使用,如果沒有別的。如果條件則回顯錯誤信息。就這樣。 – dev1234

1

你有一個分配& B,而如果條件說,一個& B或C必須是真實的打印「A和B或C不能爲空」。 A部分在你賦值給他們的那一刻是錯誤的。這意味着如果(假(A &乙分配)或真(未分配C)),這將導致真正的,因此打印「A和B或C不能爲空」

+0

以獲得應該更改的正確輸出。 – dev1234

+0

如果我是你,我會切換你想要的回聲。在if語句中回顯「yes」,在else語句中回顯「A和B或C不能爲空」。第二種選擇是將所有is_null更改爲!is_null,而不要切換回顯的內容。 – Hiltje

1
$a = 1; 
    $b = 2; 
    $c = null; 

    if ((is_null($a) && is_null($b)) || is_null($c)) { 
     echo 'yes'; 
    } 
    else{  
    echo 'A and B or C cannot be blank.'; 
    } 
0
$a = 1; 
    $b = 2; 
    $c = null; 

    if ((empty($a) && empty($b)) || empty($c)) { 
     echo 'A and B or C cannot be blank.'; 
    } 
    else{  
     echo 'yes'; 
    } 
1

在你原來的職位,你寫

如果A & B或C設置應該是打印,否則它應該打印錯誤消息

,但你實際上是測試爲未設置的變量。

一個解決方案更接近你的斷言(也更易讀)會寫這樣的代碼:

if (($a && $b) || $c) { 
    echo 'yes'; 
} else { 
    echo 'A and B or C cannot be blank.'; 
} 

的括號$a && $b是沒有必要的,但有助於確定預期的分組。