在PHP中生成动态表的最有效方法

时间:2012-03-19 21:37:55

标签: php

我目前正在制作一张动态表格:

echo '<table border=1>';
echo '<tr align="center" width="140"><td>column 1 &rarr;
<br />&darr; column 2</td>';
echo "<td width='70'>{$c1}</td>";
echo "<td width='70'>{$c2}</td>";
echo "<td width='70'>{$c3}</td>";
echo "<td width='70'>{$c4}</td>";
echo "<td width='70'>{$c5}</td>";
echo '</tr>';
for ($i = $min; $i <= $max; $i+=5) {
    echo '<tr align="center">';
    echo '<td>'.$i.'</td>
    <td>'.$c1*$i.'</td>
    <td>'.$c2*$i.'</td>
    <td>'.$c3*$i.'</td>
    <td>'.$c4*$i.'</td>
    <td>'.$c5*$i.'</td>';
    echo '</tr>';
}
echo '</table>';

我只是想知道是否有更有效的耗时方法来生成它?

该表是根据以下输入

创建的
min, max, c1, c2, c3, c4, c5

其中,例如:

min=30, max=45, c1=5, c2=10, c3=15, c4=20, c5=25

该表可能类似于:

enter image description here

提前致谢!

3 个答案:

答案 0 :(得分:2)

我不会echo HTML,而只是使用PHP中的值填充表格。这使它可以说更具可读性。

至于耗时较少,实际上并没有什么可以省略的,但是再说一遍,它只需要几分钟就可以解决它。

<table>
    <tr>
        <td>Title</td>
        <td><?php echo $c1 ?></td>
        <td><?php echo $c2 ?></td>
        <td><?php echo $c3 ?></td>
        <td><?php echo $c4 ?></td>
        <td><?php echo $c5 ?></td>
    </tr>

    <?php for ($i = $min; $i <= $max; $i+=5): ?>

        <tr>
            <td><?php echo $i ?></td>
            <td><?php echo $c1 * $i ?></td>
            <td><?php echo $c2 * $i ?></td>
            <td><?php echo $c3 * $i ?></td>
            <td><?php echo $c4 * $i ?></td>
            <td><?php echo $c5 * $i ?></td>
        </tr>

    <?php endfor; ?>
</table>

答案 1 :(得分:1)

确实没有更快的制作表格的方法。但是,我建议,如果要输出那么多HTML,则退出PHP模式以进行清理。也许改变这个:

echo "<td width='70'>{$c1}</td>";
echo "<td width='70'>{$c2}</td>";
echo "<td width='70'>{$c3}</td>";
echo "<td width='70'>{$c4}</td>";
echo "<td width='70'>{$c5}</td>";

......进入......

<td width='70'><?=$c1?></td>
<td width='70'><?=$c2?></td>
<td width='70'><?=$c3?></td>
<td width='70'><?=$c4?></td>
<td width='70'><?=$c5?></td>

答案 2 :(得分:1)

我会采取一些不同的方法。起初我不喜欢将计算(甚至是简单的)和视图/结果/ html代码混合在一起的想法。所以我将这些任务分开。通常在大多数更大的应用程序中,这种表生成甚至不可能(如MVC框架)或至少不是首选。我也移出了桌子的造型。

接下来我不喜欢编号值,数据列表看起来像一个数组。我没有足够的元信息是否正确所以我只是把它变成了一个数组,因为它看起来很有意义。列数量现在也很灵活。

查看代码(所以PHP)我总是尽量保持紧凑但可读。大多数简单的代码,不是很多循环,没有很多不同的功能只是基础。所以不是具有特定步骤的for循环,因为它不相关。视图部分应该在获取数据时显示数据。

<?PHP

//settings
$min=30;
$max=45;
$step=5;
$cols=array(5,10,15,20,25);

//result array
$data=array();

//data calculation
for($i = $min; $i <= $max; $i+=$step) {
    foreach($cols AS $col => $val) {
    $data[$i][$col]=$val*$i;

    }
}

//html generation
?>

<style type="text/css">
    th, td {
        text-align: center;
        vertical-align: top;
    }
</style>
<table border=1>
    <thead>
        <tr>
            <th scope="row">column 1 &rarr;</th>
            <?PHP
                foreach($cols AS $val) {
                    echo '<th rowspan=2 scope="col">'.$val.'</th>';
                }
            ?>
        </tr>
        <tr>
            <th scope="col">&darr; column 2</th>
        </tr>
    </thead>
    <tbody>
        <?PHP foreach($data AS $i => $row) { ?>
            <tr scope="row">
                <td><?PHP echo $i; ?></td>
                <td><?PHP echo implode('</td><td>', $row); ?></td>
            </tr>
        <?PHP } ?>
    </tbody>
</table>

希望部件对您的项目很有用。希望有一些。我喜欢写出相当多的缩进/制表符/换行符,但您可以随时根据需要设置HTML样式。除此之外,我还总是添加不同于您的问题的表头,正文和示波器,但在布局方面提供相同的输出。