小编典典

如何用 && 和 || 替换条件运算符?

php

我正在研究表达式解析器,我想添加条件运算符 ( ?:) 我已更改&&||像 javascript 中的一次一样,使用以下代码:

case '&&':
    $stack->push($op1 && $op2 ? $op2 : ($op1 ? $op2 : $op1)); break;
case '||':
    $stack->push($op1 ? $op1 : $op2); break;

所以我认为我只是替换foo ? bar : bazfoo && bar || baz是否可以使用正则表达式?如果运算符可以嵌套,则条件运算符的每个参数都可以具有相同的运算符。


阅读 114

收藏
2022-07-25

共1个答案

小编典典

foo && bar || baz并且foo ? bar : baz不等价。

假设两者都是foo被认为是真的值并且bar是被认为是假的值。在这种情况下,foo && bar为假,所以第一个表达式的值为baz?:另一方面,三元运算符 ( ) 总是在第一个参数为真时返回第二个参数,所以它会返回bar

尝试1 && 0 || 21 ? 0 : 2。第一个是 2,第二个是 0。

评估三元运算符的最简单方法是作为单个运算符采用三个操作数


顺便说一句,op1 && op2可以更简单地写为op1 ? op2 : op1.

2022-07-25