【问题标题】:Shorthand expression for an if ( $a == $b || $a == $c ) statementif ( $a == $b || $a == $c ) 语句的简写表达式
【发布时间】:2015-07-28 23:30:36
【问题描述】:

我知道这段代码会起作用:

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

可以这样读:

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

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

如果 $a 等于 $b 或 $c

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

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

【问题讨论】:

    标签: php regex if-statement operators expression


    【解决方案1】:

    你可以使用in_array:

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

    用你的例子:

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

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

    【讨论】:

    • 打败我,这就是我的建议。
    【解决方案2】:

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

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

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

    【讨论】:

    • "...但是它们的执行时间都比您发布的代码要长,因为它们依赖于更复杂的功能。" +1
    猜你喜欢
    • 2015-07-29
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    • 2018-01-29
    • 1970-01-01
    • 2022-01-04
    相关资源
    最近更新 更多