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

问题描述 投票:0回答:1

我目前有一个数组,其中每个字段包含另一个数组,其中包含我想要显示的实际数据。此数组是基于列的,表示每个字段是一列。

据我所知,要在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表(可能使用div而不是table / tr / td)

php html arrays tabular
1个回答
0
投票

我不知道任何内置方法,但你可以轻松地像这样翻转一个数组。 我首先找到最大列数,然后在for循环中使用索引循环数组,并在array_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

© www.soinside.com 2019 - 2024. All rights reserved.