我使用eval()
包含这样的内容:
$result = eval("return ".$value1.$operator.$value2.";");
运算符来自变量或db字段。
如果不使用eval
,我将如何实现相同的结果?可能吗?
这不是一个安全问题,因为值/运算符不是用户输入的,但如果PHP手册中的this comment是任何事情,那么它可能是一个性能问题。另外,如果在某些时候我想尝试Facebook的HipHop,我需要用其他东西替换eval
的所有用途。
答案 0 :(得分:2)
if(strcmp($operator, "+") == 0) {
return $value1 + $value2;
}
else if(strcmp($operator, "*") == 0) {
return $value1 * $value2;
}
...
正如@Gumbo所提到的,您也可以使用switch()
答案 1 :(得分:1)
好吧,我不确定运算符,但你可以用函数名做这样的事情:
function add($x, $y) {
return $x + $y;
}
$value1 = 1;
$value2 = 2;
$func = "add";
$result = $func($value1, $value2);
您甚至可以使用内置函数执行此操作:
$func = 'array_sum';
$result = $func(array($value1, $value2));