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

Ternary operator with multiple conditions

您好,我正在尝试正确格式化三元运算符以在 php 中使用多个条件:

$result = ($var !== 1 || $var !== 2) ? '' : 'default';

问题是,在这种格式下,即使 iv $var 是 1 或 2,我也总是不正确。例如,在一个条件下 $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';