无法打印数字序列到模式

时间:2014-10-17 10:27:43

标签: php logic

我正在尝试使用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

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