【发布时间】:2015-11-30 11:20:32
【问题描述】:
我有一个包含数百个逻辑表达式的 txt 文件。 我想阅读每一个(到目前为止没问题)并能够递归地评估它,但我不知道怎么做。该表达式具有 && 和 == 以及字符串和数字之间的比较。我不想使用 eval,因为它显然不推荐,而且在我的情况下也不起作用。
示例。假设我读了这两个字符串:
s = "a == alpha && b == beta || b == omega", or
s = "g >= 2 && f != gamma"
我想把它们分解成
($a == "alpha" && $b == "beta" || b == "omega")
($g >= 2 && f!= "gamma")
在 if 中使用它们,使其返回 TRUE 或 FALSE。我的问题不在于替换变量,而是让它们作为逻辑表达式进行评估
谁能帮帮我?
提前致谢, 克里斯蒂娜
【问题讨论】:
-
你的问题是什么???将实际值放在这个表达式中??例如:这是输入- a == alpha && b == beta || b == omega 你想要这个 1==1 && 2==2 || 3==3
-
放置值不是问题。评估表达式是。因为这是一个字符串,所以它不求值。
-
我的理解是:if( (($a == 'alpha' && $b == 'beta') || ($b == 'omega')) || ($ g >= 2 && $f != 'gamma')) { // 做某事 } else { // 做某事 } 其中 $a, $b,$g,$f 是变量
-
使用eval 是您最好的选择,但您仍然需要将字符串重新编写为普通的 php 代码
-
您进行了编辑。我理解的没错。 (a == alpha && b == beta || b == omega) 到 ($a == "alpha" && $b == "beta" || b == "omega") 最后在替换变量值之后它看起来像 - (1=='alpha' && 2=='beta' || 3=='omega')
标签: php string recursion nodes logical-operators