Transposing multidimensional arrays in PHP Transposing multidimensional arrays in PHP arrays arrays

Transposing multidimensional arrays in PHP


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

Or if you're using PHP 5.6 or later:

function transpose($array) {    return array_map(null, ...$array);}


With 2 loops.

function flipDiagonally($arr) {    $out = array();    foreach ($arr as $key => $subarr) {        foreach ($subarr as $subkey => $subvalue) {            $out[$subkey][$key] = $subvalue;        }    }    return $out;}


I think you're referring to the array transpose (columns become rows, rows become columns).

Here is a function that does it for you (source):

function array_transpose($array, $selectKey = false) {    if (!is_array($array)) return false;    $return = array();    foreach($array as $key => $value) {        if (!is_array($value)) return $array;        if ($selectKey) {            if (isset($value[$selectKey])) $return[] = $value[$selectKey];        } else {            foreach ($value as $key2 => $value2) {                $return[$key2][$key] = $value2;            }        }    }    return $return;}