如何动态地将变量赋值给php list函数

时间:2012-09-23 08:21:10

标签: php

我正在做什么,我想根据数组中有多少项生成一个列表,所以我计算了这些项并循环遍历它们,创建一个基于数字的var并构造一个包含$ a1的字符串$ var ,$ a2 ....并将$ var分配给列表($ var)

并尝试访问$ a1,但它给出了错误“Undefined variable:a1”

还有其他办法吗?

这是我的代码:

$arr = array('1','2','3');
$listsize = count($arr);
$var='';
for($i=1;$i<=$listsize;$i++){
        $var.='$a'.$i;
        if($i!=$listsize){
            $var.=',';
        }
}

list($var) = $arr;
echo $a1;

3 个答案:

答案 0 :(得分:1)

您要找的是variable variables

在PHP中,您可以动态分配变量 names (而不仅仅是值)。

以下是一个例子:

$foo = "Hello" . 1;

# In this line, I am taking the value of the variable $foo (Hello1) and
# using that as as a variable name. This is equivalent to
# $Hello1 = "World", except the variable is dynamic (hence variable variables).

$$foo = "World";

print $Hello1; # This will print World

答案 1 :(得分:1)

为什么不使用extract()

试试这个:

$values = array('1','2','3');
$variables = array();
$length = count($values);
$key = 'a1';

for ($i = 0; $i < $length; $i++){
  $variables[$key] = $values[$i];
  $key++;
}

extract($variables);
echo $a1, $a2, $a3;

答案 2 :(得分:0)

您可以在没有循环的情况下解决问题。数组$ as填充了您的数据,其中包含键a1到aX:

$arr = array('1', '2', '3', 'test', true, 4.56);
$keys = array_map(function($n) { return "a$n"; }, range(1, count($arr)) );
$a = array_combine($keys, $arr);

数组$有键和值,如输出波纹:

Array
(
    [a1] => 1
    [a2] => 2
    [a3] => 3
    [a4] => test
    [a5] => 1
    [a6] => 4.56
)

我建议你通过像$ a ['a3']这样的数组来访问变量,而不是通过像$ a3这样的变量。

如果您想拥有$ a1 ... $ aX变量,请提取数组,如:

extract($a);