PHP eval syntax


PHP eval syntax

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

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

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

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

最后,我想以结束

functionName($key,$value);

应该运行哪个PHP。

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

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

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

您所需要做的就是:

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

引用:变量函数。

在php中,您可以执行以下操作;

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

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

查看演示

添加:eval不起作用的原因是eval需要以字符串作为参数,不要忘记;来结束语句,否则会出现语法错误。所以你需要做:

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

我最近没有使用PHP,但eval的概念是计算字符串。

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

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

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

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

参见此示例,

<?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.

您需要阅读这篇文章,php中的eval是什么时候的邪恶