在php中使用变量作为运算符

时间:2010-12-19 08:36:43

标签: php operators

我正在尝试这样做:

$identifier_1 = ">";
$identifier_2 = ">";
$relation = "and";

if($value $identifier_1 3 $relation $value $identifier_1 300)

代表:

if($value > 3 and $value > 300)

1 个答案:

答案 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。编写解析器并自己计算表达式。这在某种程度上是“最干净”的方式,但编程可能非常棘手 - 取决于您想要支持的运营商。