在 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中文网其他相关文章!