tableタグで1から100を表示

問題文:

PHPのコードを教えてください。なるべくスマートな方法が良いです。表を数字1から100まで10行*10行作りたいと思っています。1〜10までいったら次の行、11〜20までいったら次の行というように作成したいとおもっています。

http://www.ganchiku.com/2006/09/jinriki_hatena_php.html

古い記事だけどなんとなくてきとーPerlで書いてみた。

print "<table>";
for my $i (1..100) {
    print "<tr>"  if ($i-1) % 10 == 0;
    print "<td>$i</td>";
    print "</tr>" if $i % 10 == 0;
}
print "</table>";

こんな感じかなー。要素が10の倍数限定の処理だけど。

でもでもこーゆーのって基本的にテンプレートでやるものだから普段はあんまりこんな処理を意識することは無いよねぇ。

TT使ってやるならTableプラグイン使うと汎用的でわかりやすく綺麗に書ける。

use Template;

my $template = \q{
[%- USE table(list, rows=10) %]
<table>
[%- FOR cols = table.cols %]
  <tr>
  [%- FOR item = cols %]
    <td>[%- item -%]</td>
  [%- END %]
  </tr>
[%- END %]
</table>
};

Template->new->process($template,{list=>[1..100]}) or die Template->error;

PHPの場合はSmarty使うんだろうけどこーゆーのってどうやってやるんだろう?

なんかhtml_tableってカスタム関数使えば簡単にできるみたいだけどデータ構造が複雑だったりデータの表示に少し加工を加えたかったり細かい制御ができないみたいなんで微妙。

まぁとりあえずドカッと表示したいだけのケースならhtml_tableで良さそうだけど。