-2

我们可以使用其他变量/数据库中的数学公式吗?例子:

var x = 7;
var formula = '+';
var y = 10;

我的意思是变量将输出 = 17(7 + 10);

但是如何使用 Javascript/PHP 实现这个公式?

4

5 回答 5

1

对于您的示例,您可以这样做:

var x = 7;
var formula = '+';
var y = 10;
z = eval(x+formula+y);  // 17
document.write(z);

但是eval对于安全来说是一个大问题,你真的不应该使用它。如果您可以提供有关您要实现的目标的更多详细信息,则可以提出替代方案。

于 2013-09-25T05:22:42.713 回答
1

PHP版本

在 php 中使用eval()来运行一个 php 代码段:

<?php
$x = 7;
$formula = '+';
$y = 10;
$expression = '$result = ' .$x . ' ' . $formula . ' ' . $y . ";";
echo $expression, "\n";    // $result = 7 + 10;
eval($expression);         // run the code
echo $result, "\n";        // ouput 17

在此处查看代码的结果

于 2013-09-25T05:25:02.953 回答
0

在php中,您可以使用如下。你可以通过这种方式避免eval

$x = 7;
$formula = '+';
$y = 10;

switch ($formula) {

case "+" : $res = $x + $y;
          break;

case "-" : $res = $x - $y;
          break;

.
.
.
.


}

echo $res;
于 2013-09-25T05:29:06.183 回答
0

像这样的东西应该在 PHP 和 javascript 中工作(稍加修改)。另外,出于安全原因,我建议不要使用 eval 。

function math($x, $y, $sign){
    switch($sign){
        case '+':
            return $x + $y;
        case '-':
            return $x - $y;
        case '*':
            return $x * $y;
        case '/':
            return $x / $y;
        default:
            return;
    }
}
$x = 7;
$formula = '+';
$y = 10;
echo math($x, $y, $formula);#returns 17
于 2013-09-25T05:32:16.003 回答
0

如果您将使用 'eval()' 反复评估文本公式,您可能希望将其存储在一个函数中 - 如下所示:

var formula = "x + y";
var func;
eval("func = function(){return" + formula + "}");

此时,当变量 x 和 y 存在于给定范围内时,您可以随时调用 'func()'。例如:

var x = 7;
var y = 10;
var answer = func();

那么 answer 的值将是“17”。

于 2013-09-25T05:36:36.493 回答