将从函数eval获得的值存储在php变量中

将从函数eval获得的值存储在php变量中,php,Php,在我的名为激励的表格列中,我将值存储为字符串,例如,”($workshop_sales*0.005),并且存储了多种类型的公式用于计算激励 我在php中使用上述代码生成了结果,但当我将其值存储在任何变量中时,它就不会被存储 如何存储其结果?是否有可能???假设: eval("echo {$row11['incentive']};"); 变体1直接保存结果(不安全): 变量2替换之前的变量(应为) 但是要小心eval(),它是邪恶的 进一步资料 eval()的主要问题是: 潜在的不安全

在我的名为激励的表格列中,我将值存储为字符串,例如,
”($workshop_sales*0.005)
,并且存储了多种类型的公式用于计算激励

我在php中使用上述代码生成了结果,但当我将其值存储在任何变量中时,它就不会被存储

如何存储其结果?是否有可能???

假设:

eval("echo {$row11['incentive']};"); 
  • 变体1直接保存结果(不安全):

  • 变量2替换之前的变量(应为)

但是要小心
eval()
,它是邪恶的

进一步资料

eval()的主要问题是:

潜在的不安全输入。传递不受信任的参数是失败的一种方式。确保参数(或其一部分)完全可信通常不是一项简单的任务

诡计。使用eval()可以使代码更聪明,因此更难理解。引用Brian Kernighan的话,“调试的难度是编写代码的两倍。因此,如果您尽可能巧妙地编写代码,那么根据定义,您就没有足够的智慧来调试它。”

假设:

eval("echo {$row11['incentive']};"); 
  • 变体1直接保存结果(不安全):

  • 变量2替换之前的变量(应为)

但是要小心
eval()
,它是邪恶的

进一步资料

eval()的主要问题是:

潜在的不安全输入。传递不受信任的参数是失败的一种方式。确保参数(或其一部分)完全可信通常不是一项简单的任务

诡计。使用eval()可以使代码更聪明,因此更难理解。引用Brian Kernighan的话,“调试的难度是编写代码的两倍。因此,如果您尽可能巧妙地编写代码,那么根据定义,您就没有足够的智慧来调试它。”

返回以下值,而不是在求值代码内回音:

function do_maths($expression) {
    eval('$o = ' . preg_replace('/[^0-9\+\-\*\/\(\)\.]/', '', $expression) . ';');
    return $o;
}

//Replace Variable with value before
$pure = str_replace("\$workshop_sales", $workshop_sales, $row11['incentive']);
//$pure is now (15*0.005)

//Interpret $pure
$foo = do_maths($pure);
echo $foo; // Outputs 0.075
返回值,而不是在求值代码内回音:

function do_maths($expression) {
    eval('$o = ' . preg_replace('/[^0-9\+\-\*\/\(\)\.]/', '', $expression) . ';');
    return $o;
}

//Replace Variable with value before
$pure = str_replace("\$workshop_sales", $workshop_sales, $row11['incentive']);
//$pure is now (15*0.005)

//Interpret $pure
$foo = do_maths($pure);
echo $foo; // Outputs 0.075

只需将变量分配给
eval
函数中的新值即可

稍后再使用变量

例如:

<?php
$workshop_sales = rand(1000, 9999);

$row11['incentive'] = '($workshop_sales*0.005)';

$result = eval("return {$row11['incentive']};");

var_dump($result);
这将打印出
$result
变量的值

PS,
您必须了解@yoshi提到的使用eval的危险性,只需将变量分配给
eval
函数中的新值即可

稍后再使用变量

例如:

<?php
$workshop_sales = rand(1000, 9999);

$row11['incentive'] = '($workshop_sales*0.005)';

$result = eval("return {$row11['incentive']};");

var_dump($result);
这将打印出
$result
变量的值

PS,
你必须看看@yoshi提到的使用eval的危险性

小心,eval()是邪恶的!同意,始终检查您正在评估的内容。在您的情况下,您可以使用
return
而不是
echo
。它将返回计算值,您可以将其分配给变量<代码>$foo=eval(“返回{$row11['incentive']};”可怕的编程。不要使用eval。如果需要计算值,请使用函数并返回结果。小心,eval()是邪恶的!同意,始终检查您正在评估的内容。在您的情况下,您可以使用
return
而不是
echo
。它将返回计算值,您可以将其分配给变量<代码>$foo=eval(“返回{$row11['incentive']};”可怕的编程。不要使用eval。如果您需要计算一个值,请使用函数并返回结果。非常感谢。那就是我要找的东西。非常感谢。那就是我一直在寻找的东西。