我正在尝试使用php打印以下序列。
到目前为止,这是我的代码:
$last = 1;
for ($j = 1; $j < 5; $j++){
for ($i = 0; $i < 14 ; ++$i){
if($i %4 == 0){
echo "************";
}
if ($i + $last > 14){
$last= -$i + 1 ;
}
echo $i+$last." , ";
}
echo "</br>";
$last=$i + $last -2;
if ($last > 14) {
$last = 1;
}
}
上面的代码产生如下内容,这不是我想要的。
答案 0 :(得分:2)
这似乎可以完成这项工作:
$len = 14;
foreach(range(0, 6) as $day) {
$start = ($day * 4 + 1) % $len;
$rng = array_slice(
array_merge(range($start, $len), range(1, $start)),
0,
$len);
$cols = [$day + 1];
foreach(array_chunk($rng, 4) as $c)
$cols []= implode(',', $c);
echo implode(' | ', $cols), "\n";
}
结果:
1 | 1,2,3,4 | 5,6,7,8 | 9,10,11,12 | 13,14
2 | 5,6,7,8 | 9,10,11,12 | 13,14,1,2 | 3,4
3 | 9,10,11,12 | 13,14,1,2 | 3,4,5,6 | 7,8
4 | 13,14,1,2 | 3,4,5,6 | 7,8,9,10 | 11,12
5 | 3,4,5,6 | 7,8,9,10 | 11,12,13,14 | 1,2
6 | 7,8,9,10 | 11,12,13,14 | 1,2,3,4 | 5,6
7 | 11,12,13,14 | 1,2,3,4 | 5,6,7,8 | 9,10