在PHP中旋转或更改数组的方向

时间:2012-03-12 20:48:50

标签: php arrays

我想旋转数组的方向,以便反转行和列。

例如,我想转换它:

1     cat     calico
2     dog     collie
3     cat     siamese
4     dog     mutt

到此:

4       3        2         1
dog     cat      dog       cat
mutt    siamese  collie    calico

我该如何做到这一点?

2 个答案:

答案 0 :(得分:1)

以下是一种可以实现此目的的方法:

function rotate_2d_array($array)
{
    $result = array();
    foreach (array_values($array) as $key => $sub_array)
    {
        foreach (array_values($sub_array) as $sub_key => $value)
        {
            if (empty($result[$sub_key]))
            {
                $result[$sub_key] = array($value);
            }
            else
            {
                array_unshift($result[$sub_key], $value);
            }
        }
    }
    return $result;
}

这是测试:

$a = array(
    array(1, 'cat','calico'),
    array(2, 'dog', 'collie'),
    array(3, 'cat', 'siamese'),
    array(4, 'dog', 'mutt')
);
print_r($a);

$b = rotate_2d_array($a);
print_r($b);

答案 1 :(得分:0)

$initialData = array( 1 => array('cat', 'calico'),
                      2 => array('dog', 'collie'),
                      3 => array('cat', 'siamese'),
                      4 => array('dog', 'mutt'),
                    );

$transposedArray = call_user_func_array('array_map',array_merge(array(NULL),$initialData));

var_dump($transposedArray);

请注意,它丢失了数组索引,并且只是@Ceith链接问题中@ Codler响应的单行变体