2016-09-07 40 views
0

我想基於變量的值,以顯示正確的結果,但我使用的是短手,PHP ELSE手短

我曾嘗試以下,但它似乎忽略第一檢查即使值是正確的。

(!empty($national_ID_number)) ? 
    $national_ID_number : 
    (!empty($foreign_ID_number)) ? 
     $foreign_ID_number : 
     $temporal_permit_number) 

感謝

+0

你能不能發佈所有的變量VAR轉儲使用? – Ikari

+6

當使用多個條件時,簡短的if/else語法不明顯。他們不會像您所期望的那樣左右擺動。在這種情況下,我建議使用標準的if/else條件。否則,您需要使用括號來強制每個條件的優先順序與您所期望的相同。 –

+0

好主。不要這樣寫代碼 - 這會讓你的同胞眼睛流血。將它分解爲兩個嵌套的if()。三元運算符只適用於每段最多一個項目(不是技術上的,而是作爲實際問題)。 –

回答

1

它使用此代碼填充正確對我來說,你似乎已經增加了額外的支架。

$national_ID_number = ''; 
$foreign_ID_number = 2; 
$temporal_permit_number = 3; 
$finalID = (!empty($national_ID_number)) ? $national_ID_number : (!empty($foreign_ID_number) ? $foreign_ID_number : $temporal_permit_number); 
echo $finalID; 
0

我只是去了一個深入的研究 - 顯然每個條件需要在括號內,下面的修復工作正常。

(!empty($national_ID_number)) ? 
    $national_ID_number : 
    ((!empty($foreign_ID_number)) ? 
     $foreign_ID_number : 
     $temporal_permit_number)); 

ReferencePHP Operator precedence

+0

*我剛剛進行了一些深入的研究*這是你在問一個問題之前應該做的事情。 – Rizier123