PHP使用string作为运算符

时间:2011-04-25 16:26:47

标签: php expression operator-keyword evaluate

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

我还有两个变量,$ a和$ b,分别等于“4”和“5”。

如何获得$a $char $b, ie 4 * 5 ?

的结果

谢谢:)

6 个答案:

答案 0 :(得分:15)

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

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

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

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

}

答案 1 :(得分:7)

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

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

答案 2 :(得分:6)

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

$c = eval("return $a $char $b;");

答案 3 :(得分:1)

看一下eval()函数。你需要构建一个合适的php命令并在eval()内运行以提取结果。

答案 4 :(得分:1)

您可以使用eval,但我建议您不要使用eval

如果有案例操作员可以通过任何操作,您应该在使用之前检查操作员是什么

switch($char)
{
  case '*':
    $result= $a * $b;
    break;

  case '+':
    $result= $a + $b;
    break;
}

答案 5 :(得分:0)

<?php
$a = 'alex';
$b = "alex";
$c = "==";
function abc($a,$b,$c){
  $d = 'return ($a '.$c.' $b) ? true : false;';
  return eval($d);
}
if(abc($a,$b,$c)){
  echo "condition true";
}else{
  echo "condition false";
}
// echo $e;
?>