我有下面的代码片段,它会将一个输入转换为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>
有什么建议吗?
答案 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
}