使基于列的数组基于行的优雅方式

Elegant way to make a column based array row based

我目前有一个数组,其中每个字段都包含另一个数组,其中包含我要显示的实际数据。该数组是基于列的,这意味着每个字段都是一列。

据我所知,要在 html 中呈现该数据,我需要翻转它以便它是基于行的,这意味着我需要遍历数组中的每个字段和每个项目该字段并生成一个新数组,现在每个项目都是一行。

我想知道是否有比两个嵌套 for 循环更简洁、更优雅的解决方案。这是一些示例数据:

$data = array(
    'ID1' => array('Column 1', 'Cell 1', 'Cell 2', 'Cell3')
    'ID2' => array('Column 2', 'Cell 1', 'Cell 2', 'Cell3'),    
    'ID3' => array('Column 3', 'Cell 1', 'Cell 2'),    
);

最终目标是制作一个HTML table(可能使用div而不是table/tr/td)

我不知道有任何内置方法,但您可以像这样轻松地翻转数组。
我首先找到最大列数,然后在 for 循环中使用索引循环数组,并在 array_column.
中使用它 我在这段代码中也省略了 'column'。
我想你不需要那个。
如果确实需要它,请将 for 循环更改为从 0 开始。

//Find lenghts of columns
Foreach($data as $column){
    $count[] = count($column);
}
$count = max($count);// get the max number of columns

For($i=1;$i<$count;$i++){
    $arr["row" . $i] = array_column($data, $i);
}

Var_dump($arr);

您可以在这里尝试,我使用其他单元格名称只是为了确保我看到它确实正确。

https://3v4l.org/vEu4r