繁体   English   中英

PHP动态数学运算符问题

[英]PHP dynamic maths operator issue

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

// 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()函数,如果可能的话。

有什么建议么?

你可以尝试使用带有return关键字和的正确字符串表达式的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
   }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM