你好,我正试图正确格式化三元运算符在php中使用多个条件:
$result = ($var !== 1 || $var !== 2) ? '' : 'default';
问题是,在这种格式中,即使$var是1或2,我也总是得不到true。在一个条件下,例如$var == 0
,它工作得很好。欢迎任何帮助。
此语句将始终为true
:
($var !== 1 || $var !== 2)
因为$var
不可能同时是两个值,所以它总是而不是至少是两个值中的一个。满足||
算子
如果你想知道$var
是否是两个值之一:
($var === 1 || $var === 2)
如果您想知道$var
是否为两个值中的,您可以否定条件:
(!($var === 1 || $var === 2))
或者单独对条件中的运算符取反,并使用&&
而不是||
(因为需要满足所有条件才能证明为负,而不是仅仅满足一个条件才能证明为正):
($var !== 1 && $var !== 2)
取决于可读性和个人偏好
如果$var为0,则$result为"default",但1和2输入条件,两者不同,总是输入
$result = ($var !== 1 && $var !== 2) ? '' : 'default';