我正在做什么,我想根据数组中有多少项生成一个列表,所以我计算了这些项并循环遍历它们,创建一个基于数字的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;
答案 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);