PHP使用string作为运算符

Fel*_*len 9 php expression evaluate operator-keyword

说我有一个字符串, $char. $char == "*".

我还有两个变量,$ a和$ b,分别等于"4"和"5".

我如何得到结果 $a $char $b, ie 4 * 5 ?

谢谢 :)

Mik*_*wis 15

您可以eval()按照@konforce的建议使用,但最安全的路线是:

$left = (int)$a;
$right = (int)$b;
$result = 0;
switch($char){

  case "*":
    $result = $left * $right;
    break;

 case "+";
   $result = $left + $right;
   break;
// etc

}
Run Code Online (Sandbox Code Playgroud)


Mar*_*c B 7

最安全的方法是一个开关构造:

function my_operator($a, $b, $char) {
    switch($char) {
        case '=': return $a = $b;
        case '*': return $a * $b;
        case '+': return $a + $b;
        etc...
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 如果运算符是`=`,则代码将生成操作数的"sum".不应该有'休息'吗? (2认同)

Mat*_*hew 6

最简单但最危险的方法是使用eval.

$c = eval("return $a $char $b;");
Run Code Online (Sandbox Code Playgroud)

  • 但要避免评估. (2认同)