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 会将表达式评估为真而不测试第二个表达式。
我知道这段代码可以工作:
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 会将表达式评估为真而不测试第二个表达式。