<?php
 
    function spiralmatrix($arr)
    {
    	return  $arr 
    			? array_merge(
    					array_shift($arr), 
    					spiralmatrix(array_reverse(transpose($arr)))
    			)
    			: $arr;
    }

function transpose($arr)
{ 
    return count($arr) > 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]]));