具有多个条件的三元运算符


Ternary operator with multiple conditions

你好,我正试图正确格式化三元运算符在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';