<?phpclass Solution { public function generateMatrix($n) { if ($n <= 0) { return []; } $forwards = ['R', 'D', 'L', 'U']; $forward = 'R'; $minI = $minJ = 0; $maxI = $maxJ = $n - 1; $num = 1; $ret = []; while($num <= pow($n, 2)) { if ($forward == 'R') { for ($j = $minJ; $j <= $maxJ; $j++) { $ret[$minI][$j] = $num++; } $minI++; } elseif ($forward == 'D') { for ($i = $minI; $i <= $maxI; $i++) { $ret[$i][$maxJ] = $num++; } $maxJ--; } elseif ($forward == 'L') { for ($j = $maxJ; $j >= $minJ; $j--) { $ret[$maxI][$j] = $num++; } $maxI--; } else { for ($i = $maxI; $i >= $minI; $i--) { $ret[$i][$minJ] = $num++; } $minJ++; } // 修改方向 $forward = $forwards[(array_search($forward, $forwards) + 1) % 4]; } return $ret; }}$n = 5;$cls = new Solution();$r = $cls->generateMatrix($n);array_walk($r, function (&$v) { ksort($v); $v = implode(',', $v);});print_r($r);