我正在尝试这样做:
$identifier_1 = ">";
$identifier_2 = ">";
$relation = "and";
if($value $identifier_1 3 $relation $value $identifier_1 300)
代表:
if($value > 3 and $value > 300)
答案 0 :(得分:2)
基本上有三种方式。
予。使用eval。这是一个强大的选项,但在涉及用户输入时也非常危险。
$op1 = ">";
$op2 = ">";
$op3 = "and";
$expr = "100 $op1 200 $op3 300 $op2 200";
eval("\$result = $expr;");
II。使用函数而不是运算符
function more($a, $b) { return $a > $b; }
function less($a, $b) { return $a < $b; }
function _and($a, $b) { return $a && $b; }
$op1 = 'more';
$op2 = 'less';
$op3 = '_and';
$result = $op3($op1(100, 200), $op2(200, 300));
III。编写解析器并自己计算表达式。这在某种程度上是“最干净”的方式,但编程可能非常棘手 - 取决于您想要支持的运营商。