php - 如何使用php数组制作html合并行表

标签 php arrays html-table

我有从 mysql 数据库获取的以下数组,在获取所有数据后,我应该创建一个表来显示所有值。

Array

(
    [0] => Array
        (
            [groupNo] => 1001
            [name] => james
        )

    [1] => Array
        (
            [groupNo] => 1002
            [name] => chen
        )

    [2] => Array
        (
            [groupNo] => 1002
            [name] => ash
        )
    [3] => Array
        (
            [groupNo] => 1001
            [name] => mark
        )

)

我当前的表格是这样的:

Group Number | Name          | Action    |          
-------------+------+---------------------
1001         | James         |           |
------------+----------------+------------
1002         | chen          |           |
-------------+---------------+------------
1002         | ash           |           |
-------------+---------------+------------
1001         | mark          |           |
-------------+---------------+------------

但我想要的是我的表格如下所示:

Group Number | Name          | Action    |          
-------------+------+---------------------
1001         | James         |           |
             +---------------+------------
             | Mark          |           |
-------------+----------------------------
1002         | chen          |           |
             +----------------------------
             | ash           |           |
-------------+----------------------------

下面是我的代码:

<?php
if (count($sharingGroup) > 0) {
    for ($i = 0; $i < count($sharingGroup); $i++) {
        $sharingGroupRecord = $sharingGroup[$i];
        ?>
        <tr>
        <td>' . $sharingGroupRecord ['groupNo'] .'</td>
        <td>' . $sharingGroupRecord ['name'] .'</td>
        <td><a name="action" href="#">Action<span>
        </span></a>
</tr>

请大家帮我解决这个问题。

最佳答案

首先您需要重新创建数组

$newArray = array();

foreach($sharingGroup as $item) {
    $newArray[$item['groupNo']][] = $item['name'];
}

它会产生这样的结果:

Array
(
    [1001] => Array
        (
            [0] => james
            [1] => mark
        )

    [1002] => Array
        (
            [0] => chen
            [1] => ash
        )

)

然后循环遍历 newArray

if (count($newArray) > 0) {

    $html = '';

    foreach($newArray as $key => $val) {
       $html .= "<tr>\r\n";    

       $html .= "<td rowspan='".count($val)."'>{$key}</td>\r\n";

       foreach($val as $key => $td) {
           if($key>0) {
              $html.= "<tr>";
           }
           $html .= "<td>{$td}</td>\r\n";
           $html .= "<td>Action</td>\r\n";
           $html .= "</tr>\r\n";
       }        
    }
}

你会得到this结果

这是code全部集中在一处

关于php - 如何使用php数组制作html合并行表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20978623/

相关文章:

html - 在 IE8 中显示背景图像

javascript - Django 框架,网格行中的增删改查

c++ - 当我将它初始化为 -1 时,为什么我的数组会被填充为零

css - 使用 colspan 设计表格 - 我无法做出正确的设计

php - 操纵嵌套的多维数组

php - 如何从数组中提取特定值

php - 将平面数组中的每个字符串复制 N 次

c# - 将 javascript 数组传递给 c# 方法

php - 如何在浏览器中显示pdf

PHP/MySQL - 对数组结果进行排序的语法?