如何使用变量作为运算符?

时间:2012-01-13 22:36:29

标签: php variables operators

我该怎么做?

$v1=105;
$v2=90;
if ($value=='subtraction'){
    $operator='-';
}else{
    $operator='+';
}

$new_value=$v1.$operator.$v2;

所以它应该返回105-90 = 15或105 + 90 = 195。但是如何将$ operator变量用作运算符?例如,这不起作用:

eval("$new_value=$v1".$operator."$v2");

感谢您的帮助!

4 个答案:

答案 0 :(得分:5)

我建议这样做,但要使用eval,您必须这样做:

// You need to escape the $ in $new_value
eval("\$new_value = $v1 $operator $v2");

我建议改为做这样的事情(即:不要将变量用于运算符,只需进行计算):

$v1=105;
$v2=90;
if ($value=='subtraction'){
    $new_value= $v1 - $v2;
}else{
    $new_value= $v1 + $v2;
}

答案 1 :(得分:0)

另一个答案更好,但如果你真的想做一些棘手的事情,我认为你可以拥有一个变量保持一个函数(而不是一个运算符)。

//untested hypothetical example

$myOperation = function Add($num1, $num2){
  return $num1+$num2;
}

在PHP中没有这样做,但我认为你可以 ......

答案 2 :(得分:0)

也许你可以改变这个:

<?php
$v1 = 105;
$v2 = 90;
if($value=='subtraction')
    $v2 *= -1;
$new_value = $v1 + $v2;
?>

答案 3 :(得分:0)

为什么不让$运算符成为函数?

$v1 = 10;
$v2 = 20;

$substraction = function($a, $b) {
    return $a - $b;
};

[...]

$someString = 'substraction';
echo $$someString($v1,$v2);