Shorthand if ( $a == $b || $a == $c ) 语句的表达式

Shorthand expression for an if ( $a == $b || $a == $c ) statement

我知道这段代码可以工作:

echo ( $a == $b || $a == $c ) ? "Yes" : "No";

可以这样读:

if $a is equal to $b or $a is equal to $c

有没有办法让它更短,比如:

if $a is equal to $b or $c

我已经尝试了很多,包括这个,但仍然没有运气:

echo ( $a == ( $b xor $c ) ) ? "Yes" : "No";

您可以使用 in_array:

var_dump(in_array($a, [$b, $c]));

以你的例子:

echo in_array($a, [$b, $c]) ? 'Yes' : 'No';

注意:此语法仅在您有 2 个以上的值时才有用。对于少数值 $a == $b || $a == $c 可以很好地完成工作并且可能更快。

这是两个备选方案,但它们的执行时间都比您发布的代码长,因为它们依赖于更复杂的函数。

preg_match('/^('.$b.'|'.$c.')$/',$a) === 0

in_array($a,array($b,$c)) === true

如果您将条件更可能为真作为第一个表达式,在大多数情况下,PHP 会将表达式评估为真而不测试第二个表达式。