在PHP中,如何将条件答案赋给eval()中的变量?

在PHP中,如何将条件答案赋给eval()中的变量?,php,eval,Php,Eval,我们在PHPeval()函数中执行动态字符串IF条件,但答案不是在变量中赋值 请查看以下代码: $variable_1 = "if(3>4)"; $variable_1 = "1"; $variable_1 = "0"; $if_val = "$variable_1{ $return_if = $variable_2 } else { $return_if = $variable_3 }"; $final_if_ans = eval($if_val); 您将所有变量声明为$varia

我们在PHP
eval()
函数中执行动态字符串IF条件,但答案不是在变量中赋值

请查看以下代码:

$variable_1 = "if(3>4)";
$variable_1 = "1";
$variable_1 = "0";

$if_val = "$variable_1{ $return_if = $variable_2 } else { $return_if = $variable_3 }";
$final_if_ans = eval($if_val); 

您将所有变量声明为
$variable\u 1
。更改为
$variable\u 2
$variable\u 3

改变这个

$variable_1 = "if(3>4)";
$variable_1 = "1";
$variable_1 = "0";


您将所有变量声明为
$variable\u 1
。更改为
$variable\u 2
$variable\u 3

改变这个

$variable_1 = "if(3>4)";
$variable_1 = "1";
$variable_1 = "0";


使用以下代码获得所需的结果:

$variable_1 = "if(3>4)";
$variable_2 = "1";
$variable_3 = "0";

$if_val = "$variable_1{ return $variable_2; } else { return $variable_3; }";
$final_if_ans = eval($if_val); 
echo $final_if_ans;
重要提示:
eval()语言构造非常危险,因为它允许执行任意PHP代码。因此,不鼓励使用它。如果您已经仔细验证了除了使用此构造之外没有其他选择,请特别注意,在未事先正确验证的情况下,不要将任何用户提供的数据传递到该构造中。

使用以下代码以获得所需的结果:

$variable_1 = "if(3>4)";
$variable_2 = "1";
$variable_3 = "0";

$if_val = "$variable_1{ return $variable_2; } else { return $variable_3; }";
$final_if_ans = eval($if_val); 
echo $final_if_ans;
重要提示:
eval()语言构造非常危险,因为它允许执行任意PHP代码。因此,不鼓励使用它。如果您已经仔细验证了除了使用此构造之外没有其他选择,请特别注意,在未事先正确验证的情况下,不要将任何用户提供的数据传递到该构造中。

除了具有相同名称的3个变量之外,您可以通过打印
$if_val
来打印生成的代码,以查看实际运行的代码
$return\u如果未定义
。使用
eval()
时应特别小心,这可能会带来安全风险,应不惜一切代价避免!在
$if_val
中,
$return_if
未定义,而且您也错过了
都会抛出错误。除了3个同名变量外,您还可以通过打印
$if_val
来打印生成的代码,以查看实际运行的代码
$return\u如果未定义
。使用
eval()
时应特别小心,这可能会带来安全风险,应不惜一切代价避免!在
$if_val
中,
$return_if
未定义,而且您也错过了
也会引发错误。