更新数组中的变量

时间:2014-02-23 13:33:28

标签: php

我有一个简单的数组$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++;
}

4 个答案:

答案 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;

http://phpfiddle.org/main/code/fet-sty

答案 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可能非常有用,例如,如果你有一个简单的模板渲染系统。