📜  将方阵原地旋转 90 度的 PHP 程序设置 1(1)

📅  最后修改于: 2023-12-03 15:25:20.355000             🧑  作者: Mango

将方阵原地旋转 90 度的 PHP 程序设置

本篇文章将介绍如何使用 PHP 编写一个实现将方阵原地旋转 90 度的程序。

思路分析

将一个二维数组按照逆时针的方向旋转 90 度,其实就是将数组的行列互换,并将每一行倒序。例如:

原始数组:

1 2 3
4 5 6
7 8 9

旋转后的数组:

3 6 9
2 5 8
1 4 7
代码实现

使用 PHP 实现该功能,可以通过两种方式实现:一种是使用 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 自带的数组函数,代码简单,易于理解;方法二使用手动实现,更加灵活,适合在其他语言中使用。