【问题标题】:Rotate an array of arrays clockwise 90 degrees [duplicate]将数组顺时针旋转 90 度 [重复]
【发布时间】:2021-08-30 14:57:38
【问题描述】:

我想旋转数组的方向,使行和列倒转。

例如,我想转换这个:

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

到这里:

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

我怎样才能做到这一点?

【问题讨论】:

  • 听起来你想转置一个多维数组:stackoverflow.com/questions/797251/…
  • 你能给我们看看你的代码吗?
  • 我不知道你在这里问什么,你想在页面上以不同的方式显示信息吗?如果是这样,这不是 PHP 问题,而是 HTML/CSS 问题。

标签: php multidimensional-array rotation orientation


【解决方案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);

【讨论】:

  • 这个答案缺少教育解释。
【解决方案2】:
$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);

请注意,尽管它丢失了数组索引,并且只是@Codler 在@Keith 链接的问题中的回复的单行变体

【讨论】:

  • 这个答案没有得到很好的解释。要求 OP 和研究人员“相信我们的魔法”并没有赋予他们权力——这会让他们更加依赖我们为他们做他们的工作。
  • 这个答案是执行“换位”,而不是顺时针旋转。这个答案是不正确的。结果不正确:3v4l.org/2q1Fk
猜你喜欢
  • 1970-01-01
  • 2013-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-03
相关资源
最近更新 更多