有问题eval()
。我被迫将字符串存储在稍后执行的数组中。
现在,在字符串中存储字符串是没有问题的。但是我如何在其中存储一个数组?由于我将无法访问该变量,因此我希望将数组直接存储到该字符串中。
请参阅此代码:
// ----------------------
// -- class A
$strId = 'id_1234';
$strClass = 'classname';
$arParams = array('pluginid' => 'monitor', 'title' => 'Monitor', ...);
$strClone = 'openForm(desktop(),"'.$strId.'","'.$strClass.'",'.$arParams.');';
$this->menu = array( "clone" => $strClone, ... );
// ----------------------
// -- class B
// loop through $this->menu, then..
{
eval( $this->menu[$item] );
}
// ----------------------
// -- class C
function openForm( $owner, $id, $class, $params )
{
...
}
除了数组之外,一切都完美无缺$arParams
。
There is an error: PHP Parse error: syntax error, unexpected ')', expecting '(' in ... (441) : eval()'d code on line 1
问题是什么?我可以不这样做serialize()
吗?
编辑:
我已经建立了正在发生的事情的表示。如果你让它运行,那么它是固定的:
$ar = array('a' => 'value1', 'b' => 'value2');
$str = "something";
$run = " a('".$str."', \$ar); "; // this line may be changed
// this is done to represent the loss of the variables in another class
unset($ar);
unset($str);
// $run is kept
eval( $run );
function a($str, $ar) {
echo "\$str=" . $str . "<br>";
echo "\$ar['a']=" . $ar['a'] . "<br>";
echo "\$ar['b']=" . $ar['b'] . "<br>";
}