みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

フレームワークで、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>

投稿日時 - 2009-03-11 19:47:05

QNo.4788348

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

ループくらいはいいと思いますよ。
<?php foreach ($list as $key => $val): ?>
<td><?= $val ?></td>
<?php endforeach; ?>

Viewでは表示するだけ、なくらいにできるだけ変数を準備しておけばもっときれいになりますが
そこらへんのさじ加減は費用対効果で。
もしくは、$valをオブジェクトで持っておいたり
ヘルパーを使うなりでももう少しは美化できそうです。

投稿日時 - 2009-03-12 03:12:43

お礼

表示するのに必要な場合は仕方ないといったところですかね。

ありがとございました。

投稿日時 - 2009-03-13 12:49:55

あなたにオススメの質問