我知道这段代码可行:
echo ( $a == $b || $a == $c ) ? "Yes" : "No";
可以这样理解:
如果$ a等于$ b或$ a等于$ c
有没有办法让它更短,如:
如果$ a等于$ b或$ c
我已经尝试过很多,包括但仍然没有运气:
echo ( $a == ( $b xor $c ) ) ? "Yes" : "No";
答案 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而不测试第二个表达式。