Php 如何在三元组中执行| |语句?

Php 如何在三元组中执行| |语句?,php,ternary-operator,Php,Ternary Operator,我现在得到的是: $somevar = ($progress_date != ('0000-00-00 00:00:00' || '//'))?$progress_date:'NA'; 而且它从来没有吐出$progress\u date。它默认为始终打印“NA” 这样做并使用较少的()来分隔事物 $somevar = ($progress_date != '0000-00-00 00:00:00' || '//')?$progress_date:'NA'; 使$progress\u date

我现在得到的是:

$somevar = ($progress_date != ('0000-00-00 00:00:00' || '//'))?$progress_date:'NA';
而且它从来没有吐出$progress\u date。它默认为始终打印“NA”

这样做并使用较少的()来分隔事物

$somevar = ($progress_date != '0000-00-00 00:00:00' || '//')?$progress_date:'NA';
使$progress\u date始终吐出,即使日期设置为字符串0


有没有一种方法可以使用三元语句捕获空白日期和设置为0的日期,以便打印出“NA”?

看起来您实际需要的是一对带有
&&
的条件

$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') ? : ;
相反,要对双方进行充分的比较。大声读出来,这是有道理的,因为你需要:进度日期不等于事情1,进度日期也不等于事情2


您没有正确使用或

$somevar = ($progress_date != '0000-00-00 00:00:00' && $progress_date !='//') ? $progress_date:'NA';
我想应该是这样

($progress_date != '0000-00-00 00:00:00' && $progress_date !='//')
| |
无法按预期使用,因为它的计算结果总是布尔值。这样一来,
$progress_date!=('0000-00-00 00:00'| |'/')
实际上与:

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

使用适当的if语句。复杂的三元语句是通往疯狂之路!感谢您不仅给出了一个有效的答案,而且还向我解释了它。我现在明白了为什么它以前不起作用了。
($progress_date != '0000-00-00 00:00:00' && $progress_date !='//')
$temp = '0000-00-00 00:00:00' || '//'; //gives true
$progress_date != $temp;