1.行数和列数取出来row,col,圈数就是 (较小值-1)/2+12.外层循环控制圈数,内层四个for循环,i3.第一个for循环,从左到右,j=i;j<; arr[i][j]4.第二个for循环,从上到下,k=i+1;k =i&&row-1-i!=i;m-- arr[row-1-i][m]//row-1-i!=i单行的时候只打印一次6.第四个循环,从下到上,n=row-2-i;n>=i&&col-1-i!=i;n-- arr[n][i]
$col ? $col : $row)-1)/2+1); for($i=0;$i<$circle;$i++){ //转圈开始 //从左到右 for($j=$i;$j<=$col-1;$j++){ $t=$arr[$i][$j]; if(in_array($t,$res)) continue; $res[]=$t; } //从上到下 for($k=$i+1;$k<$row-$i;$k++){ $t=$arr[$k][$col-$i-1]; if(in_array($t,$res)) continue; $res[]=$t; } //从右到左 for($m=$col-$i-2;$m>=$i;$m--){ $t=$arr[$row-$i-1][$m]; if(in_array($t,$res)) continue; $res[]=$t; } //从下到上 for($n=$row-$i-2;$n>$i;$n--){ $t=$arr[$n][$i]; if(in_array($t,$res)) continue; $res[]=$t; } } return $res;}$res=printMatrix($arr);