将字符串转换为变量名称

时间:2011-02-05 17:31:00

标签: php variables

我正在研究一个以字符串作为参数的函数,我需要使用它来获取同名变量的值。

例如

如果传递了字符串$foo = "$_POST['email']";,我需要检索$_POST['email']的值并将其存储为$example,以便$_POST['email'] == $example返回true。没有可行的方法将值直接传递给函数(变量必须是动态的才能使函数值得)。

我确实考虑过使用变量变量,但它们不适用于超级全局变量,这将是我需要的值的主要来源。

基本上有一种方法可以将所需变量作为字符串获取变量的值(通常在超全局数组中)吗?

如果需要更多细节,请告诉我。

由于

2 个答案:

答案 0 :(得分:4)

变量变量就是答案,但是如果你从$_POST数组中取值后,为什么不将一个键传递给函数?

注意:这个功能仅供参考,我的实际建议如下。

function fetchFromPost($key) {
  if(isset($_POST[$key]) {
    return $_POST[$key];
  } else {
    return null; //or do whatever you want to do in case key is not found
  }
}

事实上,filter_input()允许您选择输入数组,密钥和清单过滤器,它已经在您身边

答案 1 :(得分:2)

虽然我严重怀疑你应该使用它,但这是可能的。 如果您不知道字符串的来源,它允许PHP注入并使您的源代码非常容易

<?
function eval_expression($expression)
{
    eval("\$temp = $expression;");
    return $temp;
}

// Usage:
echo eval_expression("\$_GET['plop']");