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

时间:2015-05-17 11:47:58

标签: 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";

2 个答案:

答案 0 :(得分:7)

您可以使用in_array

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

以你的例子:

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

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

答案 1 :(得分:1)

这是两种选择,但它们的执行时间比你发布的代码要长,因为它们依赖于更复杂的功能。

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

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

如果你把条件更可能作为第一个表达式,那么在大多数情况下,PHP会将表达式计算为true而不测试第二个表达式。

相关问题