使用foreach将PHP数组打印到表视图中

德古拉2507

我是开发中的新手,因此遇到以下逻辑问题。

这是我的示例数据库。

$data = array(3) {
$x_count = 2;
[1] =>  $name = 'A';
        $y_count = 2;
        array(2) {
            [1] =>  $name = 'A.1';
                    $z_count = 2;
                    array(2) {
                        [1] =>  $name = 'A.1.a';
                                $val = 1;
                        [2] =>  $name = 'A.1.b';
                                $val = 1;
                    }
            [2] =>  $name = 'A.2';
                    $z_count = 2;
                    array(2) {
                        [1] =>  $name = 'A.2.a';
                                $val = 2;
                        [2] =>  $name = 'A.2.b';
                                $val = 2;
                    }
        }
[2] =>  $name = 'B';
        $y_count = 2;
        array(2) {
            [1] =>  $name = 'B.1';
                    $z_count = 2;
                    array(2) {
                        [1] =>  $name = 'B.1.a';
                                $val = 3;
                        [2] =>  $name = 'B.1.b';
                                $val = 3;
                    }
            [2] =>  $name = 'A.2';
                    $z_count = 2;
                    array(2) {
                        [1] =>  $name = 'B.2.a';
                                $val = 4;
                        [2] =>  $name = 'B.2.b';
                                $val = 4;
                    }
        }
}

而且我必须像这样打印 在此处输入图片说明

我不知道使用foreach循环将数据打印到此表中,或为x,y,z标题中的每个标题计算“ colspan”数。

我真的希望能收到一些建议。非常感谢!

编辑:x_count,y_count和z_count是从DB获取的变量,并且不仅是2。EDIT2:我的预期结果如下所示:

        <table>
        <tr>
            <th>x_name</th>
            <td colspan = "7">A</td>
            <td colspan = "7">B</td>
            <th rowspan = "3">SUM</th>
        </tr>
        <tr>
            <th>y_name</th>
            <td colspan = "3">A.1</td>
            <td colspan = "3">A.2</td>
            <td rowspan = "2">SUM</td>
            <td colspan = "3">B.1</td>
            <td colspan = "3">B.2</td>
            <td rowspan = "2">SUM</td>
        </tr>
        <tr>
            <th>z_name</th>
            <td>A.1.a</td>
            <td>A.1.b</td>
            <td>SUM</td>
            <td>A.2.a</td>
            <td>A.2.b</td>
            <td>SUM</td>
            <td>B.1.a</td>
            <td>B.1.b</td>
            <td>SUM</td>
            <td>B.2.a</td>
            <td>B.2.b</td>
            <td>SUM</td>
        </tr>
        <tr>
            <th>value</th>
            <td>1</td>
            <td>1</td>
            <td>2</td>
            <td>2</td>
            <td>2</td>
            <td>4</td>
            <td>6</td>
            <td>3</td>
            <td>3</td>
            <td>6</td>
            <td>4</td>
            <td>4</td>
            <td>8</td>
            <td>14</td>
            <td>20</td>
        </tr>
    </table>
蒂恩·休恩

您不需要添加y_count,x_count,可以count()在对象上使用function $data

是我创建的HTML结构,您可以看一下

为了便于处理数据,您可以考虑在下面使用我的数据结构

$data = [
    [
        "name" => 'A', // x_name
        "children" => [
            [
                "name" => 'A.1', // y_name
                "children" => [
                    [
                        "name" => 'A.1.a', // z_name
                        "value" => 1
                    ],
                ]
            ]
        ]
    ],
    ...
];

注意:以下所有代码逻辑均用于您提供的HTML,而不是我的jsFiddle的HTML

第一步:在数组$ data的每个元素上运行循环以处理x_name数据。将每行的html分配给变量以供进一步使用

/* Init html variable for $x_name, $y_name, $z_name, $value */
$x_html = '';
$y_html = '';
$z_html = '';
$value_html = '';
foreach ($data as $x_index => $x_data) {
    $x_children = $x_data['children'];
    $x_colspan = 1; // this variable will be sum of 1 'SUM' column and each $y_colspan
    foreach ($x_children as $y_index => $y_data) {
        $y_children = $x_data['children'];
        $y_colspan = count($y_children) + 1; // all of y's children column + SUM column

        // Update x_colspan
        $x_colspan += $y_colspan;

        // process assign html to $y_html
        $y_html .= '<td colspan = "'.$y_colspan.'">'.$y_data['name'].'</td>';
        // add SUM column
        if ($y_index == count($x_children)-1) {
            $y_html .= '<td>SUM</td>';
        }

        $sum = 0;
        foreach ($y_children as $z_index => $z_data) {
            $z_value = $z_data['value'];
            $z_html .= '<td>'.$z_data['name'].'</td>';
            // add SUM column for every looped 2 $z_data column
            if ($z_index == count($y_children)-1) {
                $z_html .= '<td>SUM</td>';
            }

            $sum += $z_value; // sum all value of current y_children
            $value_html .= '<td>'.$z_data['value'].'</td>';
        }
        // After finish assign z_html, value_html, sum it all
        $value_html .= '<td>'.$sum.'</td>'
    }


    $x_html .= '<td colspan = "'.$x_colspan.'">'.$x_data['name'].'</td>';
}

最后一步:您打印出所有变量x_html,y_html,z_html,value_html。与实际的表格html合并

$table_html = '
<table>
    <tr>
        <th>x_name</th>
        '.$x_html.'
        <th rowspan = "3">SUM</th>
    </tr>
    <tr>
        <th>y_name</th>
        '.$y_html.'
    </tr>
    <tr>
        <th>z_name</th>
        '.$z_html.'
    </tr>
    <tr>
        <th>z_name</th>
        '.$value_html.'
    </tr>
</table>
';

上面的代码可能无法运行,只是一个想法。希望对您有帮助

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用PHP将MySQL表打印到动态HTML表

来自分类Dev

使用PHP将MySQL表打印到动态HTML表

来自分类Dev

将多维数组打印到表

来自分类Dev

将动态错误数组打印到工作表

来自分类Dev

如何将数组对象打印到表?

来自分类Dev

将两列数组打印到HTML表中

来自分类Dev

如何使用PHP使用for循环将数据打印到表中

来自分类Dev

使用PHP将数据打印到打印机

来自分类Dev

使用PHP将数据打印到打印机

来自分类Dev

使用gdb将数组内容打印到文件中

来自分类Dev

使用显示/隐藏单选按钮将数组打印到Divs

来自分类Dev

使用gdb将数组内容打印到文件中

来自分类Dev

打印PHP数组HTML视图中的所有元素

来自分类Dev

如何在asp.net MVC的模型视图中使用foreach循环打印列表或数组的数据

来自分类Dev

如何使用 php 将 Json 打印到 Utf8

来自分类Dev

需要反序列化数组中的数组并将其打印到php中的表中

来自分类Dev

将随机数值打印到数组

来自分类Dev

JavaScript将2D数组打印到HTML表中

来自分类Dev

使用核心 php 在视图中显示来自 foreach 的 json 数据

来自分类Dev

使用 python 列表打印到 HTML 表

来自分类Dev

使用JSTL的c:foreach将列表值从servlet打印到JSP

来自分类Dev

如何将MySQL查询数据打印到php多维数组中?

来自分类Dev

使用表中的行/列值将相应的位置值打印到数组中?

来自分类Dev

将JavaScript中的内容打印到HTML / PHP页面中的表中

来自分类Dev

是否将“使用”通知打印到stderr?

来自分类Dev

使用Python将格式打印到文件

来自分类Dev

使用Python将输出打印到文件

来自分类Dev

使用 Powershell 将 PDF 打印到 XPS

来自分类Dev

使用来自一个视图的输入将结果打印到另一个视图

Related 相关文章

热门标签

归档