ホームページ >バックエンド開発 >PHPチュートリアル >PHPで行列を時計回りに出力するコード例
この記事の内容は、PHP 右回り印刷マトリックスのコード例についてです。一定の参考値があります。必要な友人は参照してください。お役に立てれば幸いです。
1. 行数と列数、row、col を取り出し、ターン数は (小さい値 - 1)/2 1
2. 外側のループターン数を制御します。内側の for ループは 4 つあり、i
3 です。最初の for ループは、左から右に、j=i;j 4. 2 番目の for ループは上から下に、k=i 1;k 5. 3 番目のループは右から左に、m=col-2-i;m>=i&&row-1-i!=i;m-- arr[row-1-i][m]//row -1- i!=i が 1 行の場合、一度だけ出力されます 6. 4 番目のループは下から上に、n=row-2-i;n>=i&&col-1- i!=i;n- - arr[n][i]<?php
$arr=array();
$flag=0;
for($i=0;$i<2;$i++){
$flag=$i*2;
for($j=0;$j<2;$j++){
$flag++;
$arr[$i][]=$flag;
}
}
var_dump($arr);
//顺时针打印矩阵
function printMatrix($arr){
$res=array();
$row=count($arr);
$col=count($arr[0]);
$circle=intval((($row>$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);
以上がPHPで行列を時計回りに出力するコード例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。