如何在 PHP 中为表创建动态标题

Posted

技术标签:

【中文标题】如何在 PHP 中为表创建动态标题【英文标题】:How to create dynamic header for tables in PHP 【发布时间】:2013-02-07 07:58:50 【问题描述】:

我的数组 -

$myfinal = Array(
        13 => Array
            (
            5 => 85,
            4 => 75,
            3 => 65,
            2 => 55 
            ),
        12 => 11,
        7  => 100
        );

这就是我想要动态生成的(表)-

所需输出 - http://jsfiddle.net/LCKW6/

<table cellspacing="1" cellpadding="4" border="3" bgcolor="#f5f5f5">
<tbody>

    <tr bgcolor="#99cccc">
    <th colspan="4">13</th>
    <th colspan="0">12</th>
    <th colspan="0">7</th>
    </tr>

    <tr bgcolor="#99cccc">
    <th >5</th>
    <th >4</th>
    <th >3</th>
    <th >2</th>
    <th >No subcat</th>
    <th >No subcat</th>
    </tr>

    <tr align="right">
    <td>85</td>
    <td>75</td>
    <td>65</td>
    <td>55</td>
    <td>11</td>
    <td>100</td>
    </tr>
</tbody></table>

我的代码尝试,我尝试了第一个 tr 和 th,但其余的我对循环感到困惑:

<?php
$myfinal = Array(
                13 => Array
                        (
                        5 => 85,
                        4 => 75,
                        3 => 65,
                        2 => 55 
                        ),
                12 => 11,
                7  => 100
             );

?>
<table cellspacing="1" cellpadding="4" border="3" bgcolor="#c3cece">
<tbody>
<tr bgcolor="#99cccc">
<?php
foreach( $myfinal as $key => $value )

    if( is_array($value) )
    
    echo '<th colspan="'.sizeof($value).'">'.$key.'</th>';
    
    else 
    
    echo '<th colspan="0">'.$key.'</th>';
    


?>
</tr>
</tbody>
</table>

【问题讨论】:

你需要colspan = "1",而不是0 您需要任意深度还是只需 2 层? @PhilipWhitehouse 这种类型的输出我需要jsfiddle.net/LCKW6 @PhilipWhitehouse 不,实际上我只需要像这样设置表格标题..它都将是动态的..因为较低的 trs 将从另一个表格中填充 【参考方案1】:

适用于两层...任意层可能是可能的,但要复杂得多。

// Top row
echo '<tr>';
foreach( $myfinal as $key => $value )

    if( is_array($value) )
    
        echo '<th colspan="'.sizeof($value).'">'.$key.'</th>';
    
    else 
    
        echo '<th colspan="1">'.$key.'</th>';
    

echo '</tr>';
//Middle row
echo '<tr>';
foreach( $myfinal as $key => $value )

    if( is_array($value) ) 
     
        foreach($value as $key => $column) 
            echo '<th colspan="1">'.$key.'</th>';
        
    
    else 
    
        echo '<th colspan="1">No subcat</th>';
    

echo '</tr>';
//Data
echo '<tr>';
foreach( $myfinal as $key => $value )

    if( is_array($value) ) 
     
        foreach($value as $key => $column) 
            echo '<td>'.$column.'</td>';
        
    
    else 
    
        echo '<td>'.$value.'</td>';
    

echo '</tr>';

【讨论】:

它工作正常..但是因为我有一个动态数据集..我这次使用的代码集是否可以或者需要修改..因为我认为这不是我处理的合适方式这次的数据 大多数人将数据存储为$array[$row]['column'];。这很容易循环和解析。您在上面建议的格式有很大不同,除了这一点之外,这可能会给您带来很多问题。 @PhilpWhitehouse 是的,我也这么觉得......谢谢很多人 :) +1 和绿色勾号 :).. 有时我真的对循环感到迷茫 :( 如果你有任何想法,请告诉我学习和实践:)

以上是关于如何在 PHP 中为表创建动态标题的主要内容,如果未能解决你的问题,请参考以下文章

如何在Postgres中为表中的虚拟列创建数据库链接?

如何在 Laravel 5 中为表使用全局前缀

如何在 Laravel Eloquent 查询(或使用查询生成器)中为表起别名?

尝试在 SQL 中为表创建外键时出错? [复制]

如何在 PHP 中为动态查询构建参数化 PDO 语句?

如何在 Jquery 中为动态下拉列表创建循环?