2012-03-19 63 views
0
動態表的最有效方法

我目前正在下面一個動態表:產生在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

在此先感謝!

回答

1

我會採取一些不同的方法。起初,我不喜歡有計算(甚至簡單的)和view/result/html代碼混合的想法。所以我會分開這些任務。通常在大多數更大的應用程序中,這種表生成將不可能(如MVC框架),或者至少不是首選。我也搬出了桌子的造型。

接下來,我不喜歡數字值,數據列表看起來像一個數組。我沒有足夠的元信息,無論這是否正確,所以我只是將它作爲一個數組,因爲它看起來有意義。現在列數量也很靈活。

查看代碼(so 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的樣式。除此之外,我還總是添加與您的問題不同的表格頭部,主體和範圍,但是按照所要求的佈局提供相同的輸出。

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

確實沒有更快捷的製作表格的方法。然而,我會建議,如果你要輸出那麼多的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>"; 

... INTO ...

<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>