我有一个简单的数组$arr
,其中包含6个数字。
$arr=[10,24,33,47,58,65];
我想将每个数字分配给前缀为$color
的变量,以及$color1
,$color2
等,直到$color6
然后,$color1
的值为10,$color2
的值为24等
然后我要打印出每一个,例如echo $color1;
echo $color2;
等
这就是我正在尝试的但它不起作用,有更好的方法吗?
$i=1;
foreach($arr as $row)
{
$color.$i = implode(",",$row);
$i++;
}
答案 0 :(得分:4)
你正在寻找一个名为variable-variables的东西。为此,您需要:
<?php
$i=1;
foreach($arr as $row) {
${"color" . $i} = implode(",",$row);
$i++;
}
?>
现在你可以echo $color1;
答案 1 :(得分:1)
为什么不将它们作为密钥并将其作为echo $new_arr['color1'];
,echo $new_arr['color2'];
....等等进行访问?
<?php
$arr=[1,2,3,4,5,6];
$new_arr = array();
foreach($arr as &$val)
{
$new_arr["color$val"] = $val;
}
print_r($new_arr);
<强> OUTPUT :
强>
Array
(
[color1] => 1
[color2] => 2
[color3] => 3
[color4] => 4
[color5] => 5
[color6] => 6
)
答案 2 :(得分:1)
下一个代码将起作用:
$arr = array(10,24,33,47,58,65);
$i=1;
foreach($arr as $row)
{
$temp = 'color' . $i;
$$temp = $row; // mention the double $ sign. It will create a variable variable
$i++;
}
echo $color1;
答案 3 :(得分:1)
作为一种替代方法,有一种简洁的方法可以使用extract()
来实现类似的操作,但需要注意的是,您的变量将被零索引并包含下划线;例如:$color_0
,$color_1
等。
$arr = [10, 24, 33, 47, 58, 65];
extract($arr, EXTR_PREFIX_ALL, 'color');
var_dump($color_0, $color_1, $color_2, $color_3, $color_4, $color_5);
收率:
int 10
int 24
int 33
int 47
int 58
int 65
您可以通过稍微修改$arr
来强制执行变量命名,从而强制执行索引,如下所示:
$arr = [1 => 10, 24, 33, 47, 58, 65];
这会创建名为$color_1
,$color_2
等的变量
希望这会有所帮助:)
修改强>
我刚才注意到,上面@James的观点值得注意 - 这种方法的缺点是你可以将n
个'隐形'变量提取到程序的范围内。这并不总是一件好事,特别是当您必须使用var_dump(get_defined_vars())
进行调试时。 extract
可能非常有用,例如,如果你有一个简单的模板渲染系统。