• 締切済み

フレームワークで、htmlが入り組んでいたコードを実装するには

以下のようなコードを、フレームワークを使って実装するにはどうしたらいいのでしょうか。 フレームワークはZendFrameworkです。 ※配列に入っているデータを表に出力しているだけです。 (列が少ない行は列の結合をしてます) このコードを、フレームワークのViewに落としたら、 MVCの考え方からは逸脱してしまうのでしょうか? Viewの中で、ループなどプログラムを組んでしまうのはおかしいですか? <html> <head> <title>test</title> </head> <body> <?php # 表に出力するデータ $t_array = array( array( 'a', 'b', 'c' ), array( 'd', 'e' ), array( 'f', 'g' ) ); $t_count = count($t_array); # データがあれば if ( $t_count ){ foreach ( $t_array as $t_value ){ # 各要素数が表の列になるので要素数を取得 $t_col_count[] = count($t_value); } # 今から作成する表の最大列数は$t_row_count[0] arsort($t_col_count,SORT_NUMERIC); print '<table border=1>'; foreach ( $t_array as $t_key => $t_value ){ print '<tr>'; print '<td>'.$t_key.'</td>'; $i = 1; $t_value_count = count($t_value); foreach ( $t_value as $t_key2 => $t_value2 ){ # 表の最大列数と、この行の最大列数が同じの場合 if ( $t_col_count[0] == $t_value_count ) { print '<td>'.$t_value2.'</td>'; } else { # この行の最大列数と、今の列数が同じ場合、列を結合する if ( $t_value_count == $i ){ $t_col = $t_col_count[0] - $i + 1; print '<td colspan='. $t_col. '>'. $t_value2. '</td>'; } else { print '<td>'.$t_value2.'</td>'; } } $i++; } print '</tr>'; } print '</table>'; } ?> </body>

みんなの回答

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.1

ループくらいはいいと思いますよ。 <?php foreach ($list as $key => $val): ?> <td><?= $val ?></td> <?php endforeach; ?> Viewでは表示するだけ、なくらいにできるだけ変数を準備しておけばもっときれいになりますが そこらへんのさじ加減は費用対効果で。 もしくは、$valをオブジェクトで持っておいたり ヘルパーを使うなりでももう少しは美化できそうです。

karace
質問者

お礼

表示するのに必要な場合は仕方ないといったところですかね。 ありがとございました。

関連するQ&A

専門家に質問してみよう