PHP eval语法

时间:2012-09-07 02:22:14

标签: php mysql eval

我需要帮助找出eval函数的语法 - 或者即使eval是正确的方法。我的mysql数据库中有一个列,它包含我需要运行的PHP函数的名称。还有一些PHP变量希望在传递给函数之前保留为变量。以下是我到目前为止:

eval($valRec[$key]($key,$value));

$ valRec是包含mysql SELECT结果的数组。 $ key是一个变量,它引用包含函数名称的列的名称。

$ key和$ value是我需要传递给函数的PHP变量。

最后,我想结束:

functionName($key,$value);

PHP应该运行。

希望我能清楚地解释清楚 - 提前感谢您的帮助!

5 个答案:

答案 0 :(得分:4)

Eval可能不是你想要的。查看call_user_funccall_user_func_array。它们允许您调用名称在变量中的函数。

call_user_func($valRec[$key], $key, $value);

答案 1 :(得分:3)

您需要做的就是:

$valRec[$key]($key,$value);

参考:variable functions

答案 2 :(得分:2)

在php中,你可以在下面做;

$func = 'strtolower';
$foo = $func($bar);

因此,在您的情况下,$valRec[$key]($key,$value);将起作用。

Check the demo.

Addtion: 的 您的eval无效的原因是因为eval需要将字符串作为参数,而不是忘记;来结束语句,否则会出现语法错误。 所以你需要这样做:

eval($valRec[$key].'($key, $value);');

答案 3 :(得分:1)

我最近没有使用PHP,但eval的概念是评估一个字符串。

因此,您需要创建表示要运行的代码行的字符串。

在您的情况下,这意味着:

eval($valRec[$key] . '($key, $value);');

你自己说过,你想最终得到functionName($key,$value);所以你需要创建一个字符串,然后将其传递给eval

答案 4 :(得分:0)

见这个例子,

<?php
    $string = 'cup';
    $name = 'coffee';
    $str = 'This is a $string with my $name in it.';
    echo $str. "\n";
    eval("\$str = \"$str\";");
    echo $str. "\n";
?>

这是输出

This is a $string with my $name in it.
This is a cup with my coffee in it.

您需要阅读 when is eval evil in php?