3v4l.org

run code in 500+ PHP versions simultaneously
<?php function spiralmatrix($arr) { return $arr ? array_merge( array_shift($arr), spiralmatrix(array_reverse(transpose($arr))) ) : $arr; } function transpose($arr) { return $arr ? @!$arr[1] ? array_chunk($arr[0], 1) : array_map(null, ...$arr) : $arr; } print_r(spiralmatrix([])); print_r(spiralmatrix([[1]])); print_r(spiralmatrix([[1,2],[4,3]])); print_r(spiralmatrix([[1,2,3],[8,9,4],[7,6,5]])); print_r(spiralmatrix([[1,2,3,4],[12,13,14,5],[11,16,15,6],[10,9,8,7]])); print_r(spiralmatrix([[1,2,3,4],[10,11,12,5],[9,8,7,6]]));
Output for 5.6.38, 7.1.0 - 7.1.23, 7.2.0 - 7.2.33, 7.3.16 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.34, 8.2.0 - 8.2.32, 8.3.0 - 8.3.32, 8.4.1 - 8.4.23, 8.5.0 - 8.5.8
Array ( ) Array ( [0] => 1 ) Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 ) Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 ) Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 [9] => 10 [10] => 11 [11] => 12 [12] => 13 [13] => 14 [14] => 15 [15] => 16 ) Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 [9] => 10 [10] => 11 [11] => 12 )

preferences:
116.09 ms | 1662 KiB | 4 Q