PHP动态创建变量以拆分数组

时间:2013-12-09 07:57:12

标签: php arrays list variables dynamic

<?php
    $my_array = array("hello","world","howareu");
    $c = count($my_array);

    for($i=0;$i<=$c;$i++){
        $v = '$var'.$i;
        $splited = list($v) = $my_array;
    }
?>

输入 $ my_array

但预期输出:

如果我echo $var0, $var1, $var2;

hello, world, howareu

如何根据数组计数创建动态PHP变量,然后将它们转换为字符串列表?

4 个答案:

答案 0 :(得分:0)

这是你需要处理的数据的问题......如果它非常静态,你不需要第二个foreach(),因为你无论如何比较键......

foreach($datavalueas $resultdatakey=>$resultdatavalue){
    if($resultdatakey== 'A'){
    //stuff for a
    }
    if($resultdatakey== 'B'){
    //stuff for b
    }
}

会变成

if(isset($datavalueas['A'])){
    //stuff for a
}
if(isset($datavalueas['B'])){
    //stuff for b
}

因为foreach使用了数组的副本,这对性能来说非常糟糕......

答案 1 :(得分:0)

假设我的问题是对的,你可以使用类似的东西:

$array = array( 'x', 'y', 'z' );
foreach ($array as $name )
    $$name = rand(1,100);

var_dump($x); 

$$是关键,第一个$意味着变量,因为第二个$用作变量的标识符。在这种情况下,值在数组中迭代。给我们3个变量:$ x,$ y,$ z。

- 编辑:

正确的代码,除了使用extract():

<?php
    $my_array = array("hello","world","howareu");
    $c = count($my_array);

    for($i=0;$i < $c;$i++){
        $v = 'var'.$i;
        $$v = $my_array[$i];
    }

    echo "$var0, $var1, $var2";
?>

答案 2 :(得分:0)

您不需要列表。 $$会很适合你。

$my_array = array("hello", "world", "howareu");

foreach ($my_array as $key => $val)
{
    $a = 'var'.$key;
    $$a = $val;
}

echo $var0,", ", $var1,", " $var2;

看看这里 - Variable variables

<强>加了: 或者如果您需要countfor

for ($i = 0; $i < count($my_array); $i++)
{
    $a = 'var'.$i;
    $$a = $my_array[$i];
}

echo $var0,", ", $var1,", " $var2;

当然,这行echo $var0,", ", $var1,", " $var2;糟透了,看起来像废话:)但为了完全收到你想要的东西,你需要修改变量,输出就像我写的那样,或者使用像{{{{{ 1}}与grue implode

<强>更新

但是如果你只需要那个输出,为什么不使用简单的', ':)

答案 3 :(得分:0)

您可以通过变量变量创建动态变量,如Mr.kovpack在此处所述。在下面的代码中,您可以根据对Mr.kovpack的评论访问从0到$ c-1(数组的数量)的变量。

$my_array = array("hello","world","howareu");
    $c = count($my_array);

    for($i=0;$i<=$c-1;$i++){
        ${'var'.$i} = $my_array[$i]; //Dynamic variable creation
//        $splited = list($v) = $my_array;
    }
echo $var0.$var1.$var2;

或者你可以使用如下:

$my_array = array("hello","world","howareu");
    $c = count($my_array);

    for($i=0;$i<=$c-1;$i++){
        $a='var'.$i;
        $$a = $my_array[$i];
    }
echo $var0."-".$var1."-".$var2;

您可以阅读更多内容here