2012-11-14 4 views
0

Как я могу изменить этот код для значений второго массива, начиная с «значение 4» и заканчивая «значением 6»? В основном первый параметр range() должен быть динамическим, но я не уверен, что это возможно?PHP создает ряд последовательных строк

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 
     ) 

) 

ответ

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); 
+0

работ, спасибо! – stef

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 
     ) 

) 
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 
); 
Смежные вопросы