我正在解决一个大问题,在其中一步需要将一个二维数组逆时针旋转。
所以如果我有这个矩阵:
旋转后,它将变成:
我已经找到了一个顺时针旋转它的解决方案。
问题在于即使
所以,
所以如果我有这个矩阵:
1 2 3 4
1 2 3 4
3 4 5 6
3 4 5 6
旋转后,它将变成:
4 4 6 6
3 3 5 5
2 2 4 4
1 1 3 3
我已经找到了一个顺时针旋转它的解决方案。
<?php
$a = array(array(1,2,3,4),array(5,6,7,8),array(9,0,1,2),array(3,4,5,6));
$b = array(); //result
while(count($a)>0)
{
$b[count($a[0])-1][] = array_shift($a[0]);
if (count($a[0])==0)
{
array_shift($a);
}
}
?>
问题在于即使
a
是一维的或者只有一个元素,这个方法也必须可行。所以,
1 2 3 4
会变成:4
3
2
1
array_map
与-1 => null
函数(或实际上是什么函数)会将每行的第n个元素分组... http://ideone.com/ES75XJ 你能解释一下吗? - XCSarray_map(null, [2,1], [3,2], [4,3])
,它返回[[2,3,4],[1,2,3]]
。 - salathe$a
替换array_map('array_reverse', $a)
。 - Matt Fletcherarray_map('array_reverse', $a)
替换为$a
将会顺时针旋转,但同时也会沿 y 轴反射。如果只想顺时针旋转,请将array_map('array_reverse', $a)
替换为array_reverse($a)
。 - Benjam