在函数参数中将String转换为PHP中的变量

时间:2013-02-26 16:29:06

标签: php function eval

下面是我创建的代码。我的观点是转换函数参数中的所有字符串。

例如,fname('variable1 = value1& variable2 = value2');我需要转换variable1&变量2变为ang变量为$ variable1,$ variable2而不是解析纯文本。我发现eval()函数很有用,但它只需要一个字符串,即“variable1”及其值。

function addFunction($arg){
    echo eval('return $'. $arg . ';');
}
addFunction('variable1=value1&variable2=value2');

现在问题是我收到此错误“解析错误:语法错误,意外'='在D:\ xampp \ htdocs ... \ index.php(7):eval()'代码在第1行” 。但是如果我在函数参数中只有一个变量和值,那么它的工作原理很完美,但我需要在这里有更多的参数。这有可能做到这一点,还是有任何其他方法可以计算参数?

谢谢,

6 个答案:

答案 0 :(得分:1)

您正尝试使用此名称创建变量:

$variable1=value1&variable2=value2

您需要在&处展开它,以获得所需的未来变量名称。

function addFunction($arg){

    echo eval('return $'. $arg . ';');
}

$string = 'variable1=value1&variable2=value2';

$array = explode('&', $string);

foreach($array as $part)
{
    addFunction($part);
}

答案 1 :(得分:1)

您可以使用PHP explode函数中断字符串,然后使用eval独立评估每个变量。

 $myvars = explode ('$', 'variable1=value1&variable2=value2');

$myvars是一个数组,您可以根据需要解析并提供给eval

答案 2 :(得分:1)

也许你可以使用explode()?

$varArr = explode("&",$arg);
foreach ($varArr as $varKey=>$varVal) {
    echo eval('return $'.$varKey.'='.$varVal.';');
}

答案 3 :(得分:1)

你需要拆分$ arg at&得到每个变量,然后再次= =得到每个变量和值。

$arg = 'variable1=value1&variable2=value2';
$vars = explode('&', $arg);

foreach ($vars as $var) {
    $parts = explode("=", $var);
    echo eval('return $'. $parts[0] . '='. $parts[1] . ';');
}

答案 4 :(得分:1)

这样的事情:

function addFunction($arg)
{
  $varArr = explode("&",$arg);
  $varResponse ="";

  foreach ($varArr as $varKey=>$varVal) {
   $varResponse = $varResponse."$".$varVal.";";
  }
   return $varResponse;
 }
  echo addFunction('variable1=value1&variable2=value2');

Saludos;)

答案 5 :(得分:1)

function addFunction($arg)
{
    parse_str($arg, $args);

    foreach ($args as $key => $val) {
        echo $key , " --> " , $val, "\n";
    }


}

addFunction('variable1=value1&variable2=value2');

输出

variable1 --> value1
variable2 --> value2

您也可以使用

function addFunction($arg)
{
    parse_str($arg);

    echo $variable2; // value2

}

addFunction('variable1=value1&variable2=value2');