0

如何修改此代码以使第二个数组的值以“值 4”开头并以“值 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
        )

)
4

3 回答 3

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);
于 2012-11-14T10:34:25.907 回答
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
);
于 2012-11-14T10:39:32.953 回答
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
        )

)
于 2012-11-14T10:33:45.143 回答