逆时针打印二维数组 $a = array(array(0,1,2,3,4,5,6,7),array(27,28,29,30,31,32,33,8),array(26,47,48,49,50,51,34,9),array(25,46,59,60,61,52,35,10),array(24,45,58,63,62,53,36,11),array(23,44,57,56,55,54,37,12),array(22,43,42,41,40,39,3
$a = array(array(0,1,2,3,4,5,6,7),array(27,28,29,30,31,32,33,8),array(26,47,48,49,50,51,34,9),array(25,46,59,60,61,52,35,10),array(24,45,58,63,62,53,36,11),array(23,44,57,56,55,54,37,12),array(22,43,42,41,40,39,38,13),array(21,20,19,18,17,16,15,14)); ReluoTwoArr($a); function ReluoTwoArr($a){ $len = count($a); //行列式的行数 $col = count($a[0]);//行列式的列数 $mid = $len<$col?$len:$col;//取行和列的最小值 $hang=0;//用于记录已打印的行数 $lie=0;//用于记录已打印的列数 $flag1=0;//用于记录行标或列标 $flag2=0;//用于记录行标或列标 $i=0; $sum=0; for($start=0;$start<=$mid/2;$start++){ //1.上到下打印列 if($lie<$col){ for($i=$start;$i<$len-$start;$i++){ echo $a[$i][$start]." "; $sum++; } $flag1=$i-1; $lie++;//打印的行数加1 } //2.从左到右打印行 if($hang<$len){ for($i=$start+1;$i<$col-$start;$i++){ echo $a[$flag1][$i]." "; $sum++; } $flag2=$i-1; $hang++; //打印的列数加1 } //3.从下到上打印列 if($lie<$col){ for($i=$flag1-1;$i>=$start;$i--){ echo $a[$i][$flag2]." "; $sum++; } $flag1=$i; $lie++;//打印的行数加1 } //4.从右到左打印行 if($hang<$len){ for($i=$flag2-1;$i>$start;$i--){ echo $a[$start][$i]." "; $sum++; } $hang++; //打印的列数加1 } echo "一共打印了 "+$sum+" 个元素"; } }