加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

如何在PHP中旋转二维数组90度

发布时间:2020-12-13 17:57:42 所属栏目:PHP教程 来源:网络整理
导读:我想顺时针旋转90度矩阵.这相当于使输入中的第一列成为输出的第一行,输入的第二列成为输出的第二行,输入的第三列成为输出的第3行.请注意,列的底部=行的开头,因为旋转90度. 例如: $matrix= [[1,2,3] [4,5,6],[7,8,9]];rotate90degrees($matrix)= [[7,4,1],[8
我想顺时针旋转90度矩阵.这相当于使输入中的第一列成为输出的第一行,输入的第二列成为输出的第二行,输入的第三列成为输出的第3行.请注意,列的底部=行的开头,因为旋转90度.

例如:

$matrix=    [[1,2,3]
             [4,5,6],[7,8,9]];

rotate90degrees($matrix)=      [[7,4,1],[8,2],[9,6,3]]

我所知道的是我首先转置矩阵,然后交换列以将矩阵旋转90度.怎么能将这个应用到php?

php没有像矩阵的“转置”这样的概念而没有添加某种线性代数库.
你可以通过遍历矩阵和交换一些索引来原生地完成它
<?php

function rotate90($mat) {
    $height = count($mat);
    $width = count($mat[0]);
    $mat90 = array();

    for ($i = 0; $i < $width; $i++) {
        for ($j = 0; $j < $height; $j++) {
            $mat90[$height - $i - 1][$j] = $mat[$height - $j - 1][$i];
        }
    }

    return $mat90;
}

$mat = [[1,3],[4,9]];
print_r($mat);
//123
//456
//789
print_r(rotate90($mat));
//741
//852
//963


$mat = [[1,9],["a","b","c"]];
print_r($mat);
//123
//456
//789
//abc
print_r(rotate90($mat));
//a741
//b852
//c963

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读