PHP创建一系列连续行

时间:2012-11-14 10:28:15

标签: php

如何修改此代码以使第二个数组的值以"值4和#34;开头。并以"值6"结束?基本上,range()的第一个参数应该是动态的,但我不确定这是否可能?

for($i = 1; $i <= 2; $i++)
{
    $rows[] = array_map(function($n) {
        return "value " . $n;
        }, range(1, 3));
}

print_r($rows)应该是

Array
(
    [0] => Array
        (
            [0] => value 1
            [1] => value 2
            [2] => value 3
        )

    [1] => Array
        (
            [0] => value 4
            [1] => value 5
            [2] => value 6
        )

)

3 个答案:

答案 0 :(得分:1)

我稍微重构了你的代码。这是我的解决方案:

for($i = 0; $i < 2; $i++)
{
  $rows[] = array_map(function($n) {
    return "value " . ($n+1);
  }, range($i*3, $i*3+2));
};

print_r($rows);

答案 1 :(得分:0)

$row=array();
foreach(range(1,2) as $idx)
{
    $row[]=array_map(function($n){return "value $n";},range(($idx-1)*3+1,$idx*3));
}
print_r($row)

这将输出:

Array
(
    [0] => Array
        (
            [0] => value 1
            [1] => value 2
            [2] => value 3
        )

    [1] => Array
        (
            [0] => value 4
            [1] => value 5
            [2] => value 6
        )

)

答案 2 :(得分:0)

如果您的逻辑中不需要for循环,则可以直接在range

中提供
$rows = array_map(function($n) {
    $n = 3 * $n;
    return array("value " . (1+$n), "value " . (2+$n), "value " . (3+$n), );
  }, range(0, 1) // 0 to max as in for loop
);