PHP动态数学运算符问题

时间:2017-06-26 10:37:20

标签: php string math operators

我有下面的代码片段,它会将一个输入转换为float,并根据float是正数还是负数创建一个><的变量maths运算符。

// allow custom variance from user input
if (isset($request->custom_variance)) {
    $variance_amount = floatval($request->custom_variance);
    ($variance_amount < 0) ? $operator = " < " : $operator = " > ";
} else {
    // set default
    $variance_amount = floatval(-50);
    $operator = " < ";
}

然后我在if语句中使用这些变量,我已经转储到这里以显示输出:

 var_dump((floatval($value_one) - floatval($value_two)).$operator.$variance_amount);
// returns "-51.35 < -50"

如果我对这些值进行硬编码,我会得到这个(它可以正常工作)

 var_dump((floatval($value_one) - floatval($value_two)) < -50);
// returns true

我已经在这里做了一些关于此的阅读,似乎它没有工作,因为我的运算符被解释为字符串,但我想尽可能避免使用eval()函数。 / p>

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您可以使用返回关键字和; ,使用正确的字符串表达式尝试使用 eval(),然后使用 if 条件如您所愿。

$result="return ((floatval($value_one)- floatval($value_two)).$operator.$variance_amount);";
  // returns true instead of "-51.35 < -50"
  if(eval($result)){
    // do what ever you want to do
   }