1. <?php
    2. class Solution {
    3. /**
    4. * 给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。
    5. * (先上下翻转,再关于($matrix[0][0], $matrix[3][3]) 的线对称翻转)
    6. *
    7. * @param Integer[][] $matrix
    8. * @return NULL
    9. */
    10. function rotate(&$matrix) {
    11. $n = count($matrix);
    12. for ($i = 0; $i < floor($n / 2); $i++) {
    13. for ($j = 0; $j < $n; $j++) {
    14. $tmp = $matrix[$i][$j];
    15. $matrix[$i][$j] = $matrix[$n - 1 - $i][$j];
    16. $matrix[$n - 1 - $i][$j] = $tmp;
    17. }
    18. }
    19. for ($i = 0; $i < $n - 1; $i++) {
    20. for ($j = 0; $j < $n; $j++) {
    21. if ($i >= $j) continue;
    22. $tmp = $matrix[$i][$j];
    23. $matrix[$i][$j] = $matrix[$j][$i];
    24. $matrix[$j][$i] = $tmp;
    25. }
    26. }
    27. return;
    28. }
    29. }
    30. $matrix = [
    31. [ 5, 1, 9,11],
    32. [ 2, 4, 8,10],
    33. [13, 3, 6, 7],
    34. [15,14,12,16]
    35. ];
    36. $cls = new Solution();
    37. $cls->rotate($matrix);
    38. array_walk($matrix, function (&$v) {
    39. $v = implode(',', $v);
    40. });
    41. print_r($matrix);