用php构建表体

用php构建表体,php,Php,我想创建一个在必要时生成表的类。我想调用如下方法: $html = new HTML; $html->createTbody( Array( 'tr' => Array( 'td' => Array( '1','2','3','4' ) ), 'tr' => Array( 'td' => Array( '5','6','7','8' ) ) ) ); 在这里,我有以下方法:

我想创建一个在必要时生成表的类。我想调用如下方法:

$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);
  }
?>
然后在
中对($i=0;$i类似的内容使用相同的方法

array(
    'tr' => array(
        array(1, 2, 3, 4), // first row
        array('foo', 'bar', 5, 6), //second row
        // ...
    ),
);
如果需要将
td
th
分开,可以使用以下方法:

array(
    'tr' => array(
        array('th' => array(1, 2, 3, 4), 'td' => array(5)), // first row
        array('td' => array('foo', 'bar', 5, 6, 7)), //second row
        // ...
    ),
);

您的问题是,您一遍又一遍地定义同一个键,从而覆盖它们。 我建议您不要使用任何键。只需确保阵列的第一级始终为tr,第二级始终为td

另外,在打印输出时,内部foreach错误;应该使用第一个foreach中的tr变量,并获取其tds,而不是获取foreach tr上的所有tr/td

此外,你有一层太多的数组,你称之为TR的总是只包含一项

这应该更适合:

$html = new HTML;
$html->createTbody(
    Array( // entire table
        Array( // tr
            '1','2','3','4' // td's
        ), 
        Array( // tr
            '5','6','7','8' // td's
        )
    )
);
这可能是您的输出代码:

<?php
Class HTML{

    [..]

    public function createTbody($params = Array()){
        $output = "\n\t".'<tbody>';  
        foreach($params AS $tr){
            $output .= '<tr>';
            foreach($tr AS $td){
                $output .= "\n\t\t".'<td>'.$td.'</td>';
            }
            $output .= '</tr>';
        }
        $output .= "\n\t".'</tbody>'."\n";
        echo($output);
    }
?>

<?php
Class HTML{

    [..]

    public function createTbody($params = Array()){
        $output = "\n\t".'<tbody>';  
        foreach($params AS $tr){
            $output .= '<tr>';
            foreach($tr AS $td){
                $output .= "\n\t\t".'<td>'.$td.'</td>';
            }
            $output .= '</tr>';
        }
        $output .= "\n\t".'</tbody>'."\n";
        echo($output);
    }
?>