-3

我想知道如何更改 eval 上的变量

看代码,请帮助我

$status = "HD";

$vari = "XX";

$condition = "if($status<>'99' && $status<>'XX' && $status<>'XM' && $status<> 'XD' && $status<> 'XY' && $status<> 'XE') 
{ echo 'YES'; } else { echo 'NO'; }";

$condition = eval($condition );

echo $condition;
echo "<hr>";

$resp = str_replace('status','vari',$condition);
echo eval($resp);

问题是,不要改变变量..看看改变结果是或否......

我想在我的 WHILE 表达式上使用这项工作

while($condition) {

   ...

}

谢谢你

4

1 回答 1

0

如果我错了,请纠正我,但是从你上面的代码中,当你评估你的 $condition 字符串时,你又把它放回 $condition。除非您的评估代码中包含“返回”,否则它将返回 null ( reff : http://php.net/manual/en/function.eval.php )。

但是您的问题实际上是在 $condition 上误用了 "。当您使用 " 在 php 上包装字符串时,它将将该字符串上的每个变量更改为该代码上方为该变量定义的值。

所以,不是让你的代码由 php 评估,你实际上是在向 eval() 发送错误的代码。

您当前的 $condition 代码是:

if(HD<>'99' && HD<>'XX' && HD<>'XM' && HD<> 'XD' && HD<> 'XY' && HD<> 'XE') { echo 'YES'; } else { echo 'NO'; }

你想要达到的是:

if($status<>"99" && $status<>"XX" && $status<>"XM" && $status<> "XD" && $status<> "XY" && $status<> "XE") { echo "YES"; } else { echo "NO"; }

请将 " 更改为 ' ,因为 ' 中的字符串将保持原样(如果您想将 ' 放入其中,请使用反斜杠 (\) 对其进行转义)并看看会发生什么。

我的工作:

$status = "HD";
$vari = "XX";
$condition = 'if($status<>"99" && $status<>"XX" && $status<>"XM" && $status<> "XD" && $status<> "XY" && $status<> "XE") { echo "YES"; } else { echo "NO"; }';
eval($condition );
echo $condition;
echo "<hr>";
$resp = str_replace('status','vari',$condition);
eval($resp);
于 2013-03-22T01:00:40.163 回答