逆时针打印二维数组 $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+" 个元素";
}
}
