在php中动态构建数组

时间:2013-01-21 15:36:46

标签: php arrays

我需要这个数组变为动态:(初始输出)

$data[0] = array('var0');

我有一个for循环,返回(在几个条件之后)作为VAR的东西:

for($i = 0; $i < N; $i++) 
    {
    (...) END AS var1;
    (...) END AS var2;
    (...) END AS var3;
    (...) END AS varN;
    (...) END AS (...)
    }

第一个周期后的预期输出:

 $data[0] = array('var0','var1');

第二个周期后的预期输出:

 $data[0] = array('var0','var1','var2');

继续(预计最终输出):

 $data[0] = array('var0','var1','var2','var3','varN');

怎么可能呢?

4 个答案:

答案 0 :(得分:3)

要将某些内容“推”到数组的末尾,请使用[]语法:

$data[0][] = 'something to add to array';

E.g。

$data[0] = array();
$data[0][] = 'first';
$data[0][] = 'second';

$data[0]将包含:

array('first','second');

答案 1 :(得分:3)

for($i = 0; $i < N; $i++) {
    $data[0][] = 'var' . $i;
}

答案 2 :(得分:1)

为什么不在数字范围前加上前缀,例如通过array_map

$data[$i] = array_map(function($v) {return 'var' . $v;}, range(0, $i));

如果你在范围内有一个范围,你也可以这样做:

$prefix = function($prefix) {
    return function($v) use ($prefix) {
        return $prefix . $v;
    };
};

$map = function($v) use ($prefix) {
    return array_map($prefix('var'), range(0, $v));
}

$data = array_map($map, range(0, $n - 1));

或者一下子(压缩):

$data = array_map(function($v) {
    return array_map(function($v) { return 'var' . $v;}, range(0, $v));       
}, range(0, $n - 1);

答案 3 :(得分:0)

也许你想要:array_push()。您可以在循环中将变量添加到数组中。