我需要帮助找出eval函数的语法 - 或者即使eval是正确的方法。我的mysql数据库中有一个列,它包含我需要运行的PHP函数的名称。还有一些PHP变量希望在传递给函数之前保留为变量。以下是我到目前为止:
eval($valRec[$key]($key,$value));
$ valRec是包含mysql SELECT结果的数组。 $ key是一个变量,它引用包含函数名称的列的名称。
$ key和$ value是我需要传递给函数的PHP变量。
最后,我想结束:
functionName($key,$value);
PHP应该运行。
希望我能清楚地解释清楚 - 提前感谢您的帮助!
答案 0 :(得分:4)
Eval可能不是你想要的。查看call_user_func
和call_user_func_array
。它们允许您调用名称在变量中的函数。
call_user_func($valRec[$key], $key, $value);
答案 1 :(得分:3)
答案 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.