|
- <?php
- function matrix($n){
- $y = $x = ($n - 1) / 2;
- $num = 2;
- $total = pow($n, 2);
- $arr = array_fill(0, $n, array_fill(0, $n, 1));
- $i = 0;
- $limit = 1;
-
- while ($num <= $total) {
- for ($j = 0; $num <= $total && $j < $limit; ++$j) {
- switch ($i) {
- case 0 :
- ++$y;
- break;
- case 1 :
- ++$x;
- break;
- case 2 :
- --$y;
- break;
- case 3 :
- --$x;
- break;
- }
- $arr[$x][$y] = $num++;
- }
- if ($i % 2 == 1) {
- ++$limit;
- }
- $i = ($i + 1) % 4;
- }
- return $arr;
- }
-
- $arr = matrix(9);
- print_r($arr);
复制代码 |
|