Php if($a==b | |$a==c)语句的简写表达式

Php if($a==b | |$a==c)语句的简写表达式,php,regex,if-statement,operators,expression,Php,Regex,If Statement,Operators,Expression,我知道此代码将起作用: echo ( $a == $b || $a == $c ) ? "Yes" : "No"; 可以这样理解: 如果$a等于$b或$a等于$c 有没有办法让它更短一些,比如: 如果$a等于$b或$c 我尝试了很多,包括这个,但仍然没有成功: echo ( $a == ( $b xor $c ) ) ? "Yes" : "No"; 您可以使用: 以你的例子: echo in_array($a, [$b, $c]) ? 'Yes' : 'No'; 注意:此语法仅在值超过2个

我知道此代码将起作用:

echo ( $a == $b || $a == $c ) ? "Yes" : "No";
可以这样理解:

如果$a等于$b或$a等于$c

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

如果$a等于$b或$c

我尝试了很多,包括这个,但仍然没有成功:

echo ( $a == ( $b xor $c ) ) ? "Yes" : "No";
您可以使用:

以你的例子:

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会将表达式计算为真,而不会测试第二个表达式。

我想说的是,这就是我的建议。“…但它们都需要比您发布的代码更长的时间来执行,因为它们依赖更复杂的函数。”+1
preg_match('/^('.$b.'|'.$c.')$/',$a) === 0

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