0

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

并试图访问 $a1 但它给了我错误“未定义的变量: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;
4

3 回答 3

1

您正在寻找的是变量 variables

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

这是一个例子:

$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
于 2012-09-23T08:23:39.313 回答
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;
于 2012-09-23T08:36:53.853 回答
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);

数组 $as 具有如下输出的键和值:

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

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

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

extract($a);
于 2012-09-23T09:34:16.740 回答