📅  最后修改于: 2023-12-03 15:25:20.355000             🧑  作者: Mango
本篇文章将介绍如何使用 PHP 编写一个实现将方阵原地旋转 90 度的程序。
将一个二维数组按照逆时针的方向旋转 90 度,其实就是将数组的行列互换,并将每一行倒序。例如:
原始数组:
1 2 3
4 5 6
7 8 9
旋转后的数组:
3 6 9
2 5 8
1 4 7
使用 PHP 实现该功能,可以通过两种方式实现:一种是使用 PHP 自带的数组函数,另一种是手写实现。
使用 PHP 内置的 array_map
函数和 array_column
函数,可以轻松实现将行列互换的功能。代码如下:
function rotate($arr) {
$arr = array_map(null, ...$arr);
foreach($arr as &$row) {
$row = array_reverse($row);
}
return $arr;
}
$arr = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
$result = rotate($arr);
print_r($result);
该程序的输出如下:
Array
(
[0] => Array
(
[0] => 3
[1] => 6
[2] => 9
)
[1] => Array
(
[0] => 2
[1] => 5
[2] => 8
)
[2] => Array
(
[0] => 1
[1] => 4
[2] => 7
)
)
手动实现的方法,需要使用两层循环来遍历数组,并使用一个临时数组来存储变换后的数组。代码如下:
function rotate($arr) {
$n = count($arr);
$temp = array_fill(0, $n, array_fill(0, $n, 0));
for($i = 0; $i < $n; $i++) {
for($j = 0; $j < $n; $j++) {
$temp[$n - 1 - $j][$i] = $arr[$i][$j];
}
}
return $temp;
}
$arr = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
$result = rotate($arr);
print_r($result);
该程序的输出结果与方法一相同。
本篇文章介绍了两种使用 PHP 编写将方阵原地旋转 90 度的方法,均可实现该功能。其中,方法一使用了 PHP 自带的数组函数,代码简单,易于理解;方法二使用手动实现,更加灵活,适合在其他语言中使用。