2014-10-17 31 views
0

我想用php打印下面的序列。麻煩打印數字序列的模式

enter image description here

這裏是我到目前爲止的代碼:

$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; 
} 


} 

上面的代碼生成的東西如下,這並不完全符合我想要的。

enter image description here

回答

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