<?phpclass Solution { /** * 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。 * @param Integer[][] $matrix * @return Integer[] */ public function spiralOrder($matrix) { if (!$matrix) return []; $m = count($matrix); $n = count($matrix[0]); $ret[] = $matrix[0][0]; $j = $i = 0; do { if (isset($matrix[$i][$j + 1])) { // 右 $ret[] = $matrix[$i][++$j]; } elseif (isset($matrix[$i + 1][$j])) { // 下 $ret[] = $matrix[++$i][$j]; } elseif (isset($matrix[$i][$j - 1])) { // 左 $ret[] = $matrix[$i][--$j]; } elseif (isset($matrix[$i - 1][$j])) { // 上 $ret[] = $matrix[--$i][$j]; } else { break; } unset($matrix[$i][$j]); } while (count($ret) < $m * $n); return $ret; }}$matrix = [ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12]];$cls = new Solution();$r = $cls->spiralOrder($matrix);print_r($r);