[英]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.