首页 > 解决方案 > 转置具有预定义键的 PHP 多维数组

问题描述

我有一个带有 3 个键(“长度”、“宽度”和“高度”)的多维数组。每个键都与一个值数组相关联:

$data = [
    "length" => ["12", "44"],
    "width" => ["22", "45"],
    "height" => ["22", "34"]
];

如何将每个键的列转换为 3 列的行,如下所示:

$rows = [
    ["length" => "12", "width" => "22", "height" => "22"],
    ["length" => "44", "width" => "45", "height" => "34"]
]; 

标签: phparraysmultidimensional-arrayassociative-arraytranspose

解决方案


以下函数将完成这项工作:

function transpose($data)
{
    $result = [];
    $keys = array_keys($data);
    for ($row = 0,  $rows = count(reset($data)); $row < $rows; $row++) {
        foreach ($keys as $key) {
            $result[$row][$key] = $data[$key][$row];
        }
    } 

    return $result;
}

请注意,该函数是一个通用解决方案,它不依赖于键的名称,也不依赖于每个键的条目数。


推荐阅读