必要に応じてテーブルを生成するクラスを作りたいです。私が欲しいのは、以下のようなメソッドを呼び出すことです:
$html = new HTML;
$html->createTbody(
Array(
'tr' => Array(
'td' => Array(
'1','2','3','4'
)
),
'tr' => Array(
'td' => Array(
'5','6','7','8'
)
)
)
);
ここでは、次の方法があります。
<?php
Class HTML{
[..]
public function createTbody($params = Array()){
$output = "\n\t".'<tbody>';
foreach($params['tr'] AS $tr){
$output .= '<tr>';
foreach($params['tr']['td'] AS $td){
$output .= "\n\t\t".'<td>'.$td.'</td>';
}
$output .= '</tr>';
}
$output .= "\n\t".'</tbody>'."\n";
echo($output);
}
?>
これに関する問題は、最後のtr
配列のみが印刷されることです。またprint_r
、$params
配列を表示すると、 が表示されます5, 6, 7, 8
。
今、私はかなり立ち往生しています。tr
配列を一意にするか、メソッドを再帰的にする必要があると思いますが、どうすればよいですか?
私は次のようにメソッドを呼び出してみました:
$html->createTbody(
Array(
'num' => '2',
'tr1' => Array(
'td' => Array(
'1','2','3','4'
)
),
'tr2' => Array(
'td' => Array(
'5','6','7','8'
)
)
)
);
そして、for($i=0;$i<$params['num'];$i++)
ループ内で同じメソッドを呼び出してtr and td
配列を呼び出します$params['tr'.$i]['td']
が、それは本来の方法で出力しませんでした。ただし、その配列を印刷すると、完全な配列が表示されました。
多分誰かが私を助けることができますか?