【问题标题】:Elegant way to make a column based array row based使基于列的数组基于行的优雅方法
【发布时间】:2018-02-26 03:59:59
【问题描述】:

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

据我所知,要在 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】:

    我不知道任何内置方法,但您可以像这样轻松翻转数组。
    我首先找到最大列数,然后在 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

    【讨论】:

    • 谢谢,我不知道 array_column 函数。这让事情变得更容易
    猜你喜欢
    • 2018-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-29
    • 1970-01-01
    • 2020-02-07
    相关资源
    最近更新 更多