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

私が試した方法は常にエラーにつながり、配列を文字列としてそこに配置するというアイデアを思いつきましたvar_export()

ここに投稿された2つの試みがあります: 後でeval()に文字列で配列を保存します

于 2012-09-25T09:01:26.410 に答える
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 に答える