如何将变量名数组传递给list()

时间:2014-07-15 16:10:57

标签: php

我正在尝试传递一组变量名来分配给list()函数,我想知道它是否可能。我的意图是list($variables)解析$values

$variables = array("$var1","$var2","$var3");
$values = array('Value1','Value2','Value3');

//Can I simply pass an array of variable names to be assigned here
list($values) = explode("&", $values);

为了澄清,我的目的是让PHP执行:

list($var1, $var2, $var3) = explode("&", $values);

5 个答案:

答案 0 :(得分:2)

你必须做一点小动作,但使用array_combineextract可以达到同样的效果:

$keys = array("var1","var2","var3");
$values = array('Value1','Value2','Value3');
extract(array_combine($keys, $values));
echo $var1; //"Value1"

答案 1 :(得分:0)

<?php

$info = array('coffee', 'brown', 'caffeine');

// Listing all the variables
list($drink, $color, $power) = $info;
echo "$drink is $color and $power makes it special.\n";

// Listing some of them
list($drink, , $power) = $info;
echo "$drink has $power.\n";

// Or let's skip to only the third one
list( , , $power) = $info;
echo "I need $power!\n";

// list() doesn't work with strings
list($bar) = "abcde";
var_dump($bar); // NULL
?>

http://php.net/manual/en/function.list.php

答案 2 :(得分:0)

list用于在一个操作中分配变量列表。这是sytax:

$string = 'VarA, VarB, VarC';
list($varA, $varB, $varC) = explode(',', $string);

当你使用变量时,你需要保持引号,所以第二个是正确的。

$array = ($var1, $var2, $var3);

您不再需要使用explode,因为您已经有了一个数组。 explode创建一个数组。在您的示例中,它将是:

$array = array($var1, $var2, $var3);
list($varA, $varB, $varC) = $array;

请注意,我更改了数组语法。您忘记了array关键字。

答案 3 :(得分:0)

我知道您要爆炸响应变量并将每个值分配给相应的变量。

您可以通过这种方式实现它,而不是使用list:

$varnames = array('var1','var2','var3');
$varvals  = explode('&',$response);
foreach($varnames as $k => $v){
    $$v = $varvals[$k];
}

这样$ var1将在响应中具有第一个值,$ var2将具有第二个值,依此类推。

答案 4 :(得分:-1)

你做不到。为什么你不使用你的变体?