Home > Backend Development > PHP Tutorial > How Can I Efficiently Transpose Multidimensional Arrays in PHP?

How Can I Efficiently Transpose Multidimensional Arrays in PHP?

Barbara Streisand
Release: 2024-12-26 12:05:14
Original
562 people have browsed it

How Can I Efficiently Transpose Multidimensional Arrays in PHP?

Transposing Multidimensional Arrays in PHP: Flipping and Generalizing

Transposing a multidimensional array is an operation that flips rows and columns, effectively rotating the array 90 degrees. To address this common programming task, let's explore a PHP function that accomplishes this for both two-dimensional and higher-dimensional arrays.

Transposing Two-Dimensional Arrays

For a two-dimensional array, such as the example provided in the question, transposing it is a straightforward process. The following function, named transpose, achieves this:

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

This function works by adding a null element as the first index of the array and then using array_map to iterate over each row and create a new array of the respective columns.

For instance, to transpose the $foo array given in the question:

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

This will output the desired result:

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

Generalizing to Higher-Dimensional Arrays

The transpose function can be generalized to handle arrays of any dimension using recursion. Here's how:

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);
}
Copy after login

This function takes an array as input and recursively calls itself on the array's values. The base case is when the value is no longer an array, in which case it returns a one-element array containing the value. For arrays, it recursively transposes each value and uses array_map to combine them into the final transposed array.

Using the multi_transpose function is similar to the two-dimensional transpose function:

$multi_dimensional_array = ...;
$transposed = multi_transpose($multi_dimensional_array);
Copy after login

This function can handle arbitrarily nested arrays and will transpose them by flipping their dimensions 90 degrees.

The above is the detailed content of How Can I Efficiently Transpose Multidimensional Arrays in PHP?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template