php矩阵顺时针旋转90°的核心是将原矩阵第j列从下到上赋值给新矩阵第j行,实现为$rotated[$j][$rows-1-$i] = $matrix[$i][$j],支持任意m×n矩形矩阵。

PHP 中实现矩阵旋转,核心是理解二维数组索引变换规律。顺时针旋转 90° 最常用,关键在于:新矩阵的第 i 行,来自原矩阵的第 i 列(倒序)。
顺时针旋转 90 度
适用于正方形矩阵(n×n),也兼容矩形(m×n → n×m)。原理是将原矩阵的每一列从下到上提取,作为新矩阵的一行。
- 设原矩阵为
$matrix,行数$rows,列数$cols - 新建结果数组
$rotated,尺寸为$cols × $rows - 遍历列索引
$j = 0到$cols-1,再遍历行索引$i = $rows-1到0(倒序) - 赋值:
$rotated[$j][$rows-1-$i] = $matrix[$i][$j](更直观写法:$rotated[$j][] = $matrix[$i][$j]配合内层循环)
简洁可读的实现示例
以下代码支持任意尺寸二维数组,顺时针转 90°:
function rotateMatrixClockwise($matrix) {
if (empty($matrix)) return [];
$rows = count($matrix);
$cols = count($matrix[0]);
<pre class='brush:php;toolbar:false;'>$rotated = array_fill(0, $cols, array_fill(0, $rows, null));
for ($i = 0; $i < $rows; $i++) {
for ($j = 0; $j < $cols; $j++) {
$rotated[$j][$rows - 1 - $i] = $matrix[$i][$j];
}
}
return $rotated;}
立即学习“PHP免费学习笔记(深入)”;
例如输入 [[1,2,3],[4,5,6]](2×3),输出为 [[4,1],[5,2],[6,3]](3×2)。
逆时针旋转 90 度与 180 度
逆时针 90° 等价于先转置再垂直翻转;也可直接映射:$rotated[$cols-1-$j][$i] = $matrix[$i][$j]。
- 逆时针 90°:
$rotated[$cols-1-$j][$i] = $matrix[$i][$j] - 180° 旋转:等价于两次顺时针 90°,或直接反向遍历行列:
$rotated[$rows-1-$i][$cols-1-$j] = $matrix[$i][$j]
注意事项与优化建议
实际使用中需注意边界和类型安全:
- 确保输入是规则二维数组,可用
array_is_list()和count($matrix[0])校验列数一致性 - 大矩阵慎用嵌套循环,PHP 数组复制开销明显;如需高频操作,考虑用索引计算代替生成新数组
- 若仅需访问旋转后某位置的值(不构造完整新矩阵),可封装坐标转换函数,节省内存











