0

一些代码用于eval()执行存储在数组中的代码,如下所示:

// $oOwner is an object
$strId = "abc";
$strClass = "someClass";
$aParams = array('a' => 'atext', 'b' => 'btext');

$this->menu = array(
"Entry 1" => ' openForm(\$oOwner,\$strId,\$strClass,\$aParams); ',
// ...
);

数组键的值将直接提供给eval()函数。

现在我得到一个错误:Parse error: syntax error, unexpected T_VARIABLE, expecting T_STRING ... eval()'d code on line 1

问题是什么?


编辑:

循环遍历数组和eval()值:

eval( $this->menu[$param[0]] );

编辑2:

现在:"Entry 1" => " openForm(\$this->owner,\$strId,\$strClass,\$aParams); "

使用双引号"..."导致PHP Notice: Undefined variable: strId in ... : eval()'d code on line 1. 也适用于其他变量。

`

4

3 回答 3

0

您正在使用单引号',因此您不需要\$在变量中使用

概念教授同时使用单引号和双引号

function openForm(){
    var_dump(func_get_args());
}

$strId = "abc";
$strClass = "someClass";
$aParams = array('a' => 'atext', 'b' => 'btext');
$oOwner = "ABC" ;

$menu = array(
"Entry 1" => ' openForm($oOwner,$strId,$strClass,$aParams); ',
"Entry 2" => " openForm(\$aParams,\$strId); "
);

eval($menu["Entry 1"]);

输出

array
  0 => string 'ABC' (length=3)
  1 => string 'abc' (length=3)
  2 => string 'someClass' (length=9)
  3 => 
    array
      'a' => string 'atext' (length=5)
      'b' => string 'btext' (length=5)


array
  0 => 
    array
      'a' => string 'atext' (length=5)
      'b' => string 'btext' (length=5)
  1 => string 'abc' (length=3)
于 2012-09-21T14:49:21.250 回答
0

在将代码声明为 eval 时,您是否尝试过双引号?

// ...
$this->menu = array(
"Entry 1" => " openForm(\$oOwner,\$strId,\$strClass,\$aParams); ",
// ...
);
于 2012-09-21T14:53:06.913 回答
0

我尝试的方式总是会导致错误,因此我想出了将数组作为字符串通过var_export().

这里发布了 2 次尝试: Store array in a string to eval() later

于 2012-09-25T09:01:26.410 回答