2011-08-12 83 views
1

我有現在的問題是:如何做||三元組內的聲明?

$somevar = ($progress_date != ('0000-00-00 00:00:00' || '//'))?$progress_date:'NA'; 

,並沒有以往任何時候都吐了出來$ progress_date。它默認總是打印'NA'。

這樣做的,使用更少的()來分隔東西

$somevar = ($progress_date != '0000-00-00 00:00:00' || '//')?$progress_date:'NA'; 

使得它如此$ progress_date總是吐出來,甚至當日期設置爲0的字符串。

是否有利用三元語句她倆都設置爲0,空白的日期,日期是「NA」被打印出來的方法嗎?

+0

使用一個適當的if語句。複雜的三元陳述是通向瘋狂的道路! – vascowhite

回答

2

看起來你真正想要的是一對條件與&&

$somevar = ($progress_date != '0000-00-00 00:00:00' && $progress_date != '//')?$progress_date:'NA'; 

你需要有雙方各布爾比較,所以你不能做的:

// Won't do what you expect 
$somevar = $progress_date != ('thing1' || 'thing2') ? : ; 

反而使雙方的全面比較。讀出聲來,這是有道理的,因爲你需要什麼:進度日期不等於thing1和進度日期也並不等於

$somevar = $progress_date != "thing1" && $progress_date != "thing2" ? : ; 
+0

不僅謝謝你的回答,還能向我解釋。我現在明白爲什麼它以前不工作。 – mountaingirl

+0

@velvetpuzzle樂於幫助。 –

2
$somevar = (!in_array($progress_date, array('0000-00-00 00:00:00','//')) ? $progress_date : 'NA'; 
0

你不使用或適當地thing2。

$somevar = ($progress_date != '0000-00-00 00:00:00' && $progress_date !='//') ? $progress_date:'NA'; 
0

我覺得應該是

($progress_date != '0000-00-00 00:00:00' && $progress_date !='//') 

||如你預期無法使用,因爲它總是評估爲布爾值。這種方式$progress_date != ('0000-00-00 00:00:00' || '//')實際上是相同的:

$temp = '0000-00-00 00:00:00' || '//'; //gives true 
$progress_date != $temp; 
+0

'$ temp'實際上是'true' – NullUserException