怎么办||三元内部的陈述?

时间:2011-08-12 15:08:59

标签: php ternary-operator

我现在拥有的是:

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

并且它不会吐出$ progress_date。它默认始终打印'NA'。

执行此操作并使用less()分隔内容

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

使得$ progress_date总是吐出,即使日期设置为0的字符串也是如此。

有没有办法使用三元语句来捕捉空白日期和日期设置为0,以便打印出“NA”?

4 个答案:

答案 0 :(得分: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,进度日期也不等于thing2

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

您没有使用或正确使用。

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

答案 3 :(得分: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;