什么是简化If条件(重写条件)的可能的编程方法

时间:2016-04-28 08:00:55

标签: php parsing expression

我有一个if条件if(abc==xyz AND (xyz==jkl OR abc==jkl))

如何使用能给我非括号条件的代码重写此表达式,例如

if(xyz==jkl OR abc==jkl  AND abc==xyz)`

对于基本表达式,我们可以使用前缀表示法,基于运算符的优先级,在堆栈的帮助下我们可以解决它。但我只想重写条件,以便找到哪个输出与带括号的输出相同。

2 个答案:

答案 0 :(得分:2)

您可以首先将条件转换为DNF,使用AND比OR高precedence的事实:

if (abc==xyz AND xyz==jkl OR abc==xyz AND abc==jkl)

查看第二部分,可以将其重写为

if (abc==xyz AND xyz==jkl OR abc==xyz AND xyz==jkl)

现在你可以看到两个部分是相同的,真的,即我们可以简化为

if (abc==xyz AND xyz==jkl)

有趣的事实:如果表达式无法简化,您还可以合并||AND,并利用优先级规则:

if (abc==xyz AND xyz==jkl || abc==jkl)

不是我会推荐它。

答案 1 :(得分:0)

如果要求具体说明这个条件,如果abc,xyz,jkl彼此相等则为真

所以

if(abc == jkl AND abc == xyz)。

如果您正在寻找实验,请查看运算符优先级表http://php.net/manual/en/language.operators.precedence.php