首页 >后端开发 >php教程 >如何在 PHP 中高效转置多维数组?

如何在 PHP 中高效转置多维数组?

Barbara Streisand
Barbara Streisand原创
2024-12-26 12:05:14564浏览

How Can I Efficiently Transpose Multidimensional Arrays in PHP?

在 PHP 中转置多维数组:翻转和泛化

转置多维数组是一种翻转行和列的操作,有效地旋转数组90度。为了解决这个常见的编程任务,让我们探索一个可以为二维和高维数组完成此任务的 PHP 函数。

转置二维数组

对于二维数组,例如问题中提供的示例,转置它是一个简单的过程。以下名为 transpose 的函数可以实现此目的:

function transpose($array) {
    array_unshift($array, null);
    return call_user_func_array('array_map', $array);
}

该函数的工作原理是添加一个 null 元素作为数组的第一个索引,然后使用 array_map 迭代每一行并创建一个新数组

例如,要转置问题中给出的 $foo 数组:

$bar = transpose($foo);
var_dump($bar[2]);

这将输出所需的内容结果:

array(3) {
  ["a"]=>
  string(2) "a2"
  ["b"]=>
  string(2) "b2"
  ["c"]=>
  string(2) "c2"
}

推广到高维数组

转置函数可以推广到使用递归处理任何维度的数组。操作方法如下:

function multi_transpose($array) {
    if (!is_array($array)) {
        return array($array);
    }

    $transposed = array();
    foreach ($array as $key => $value) {
        $transposed[] = multi_transpose($value);
    }

    return call_user_func_array('array_map', $transposed);
}

此函数将数组作为输入,并在数组的值上递归调用自身。基本情况是当值不再是数组时,在这种情况下,它返回包含该值的单元素数组。对于数组,它会递归地转置每个值,并使用 array_map 将它们组合成最终的转置数组。

使用 multi_transpose 函数与二维转置函数类似:

$multi_dimensional_array = ...;
$transposed = multi_transpose($multi_dimensional_array);

这个函数可以处理任意嵌套的数组,并通过将其维度翻转 90 度来转置它们。

以上是如何在 PHP 中高效转置多维数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn