繁体   English   中英

PHP从动态TD创建表TR

[英]Php create table from dynamic td tr

我试图从具有动态行单元格的动态数组创建表。

在数组中找到行时,它将在第一row添加<tr>标记,直到在数组中找到下一行为row 我想当找到行时tr标签将从内部的td标签开始,直到在数组中找到下一行,然后再次将相同的tr标签开始,直到在数组中找到下一行。

这是一个数组的例子

$cars = array (
      array(
          'table_body_element'=>'row',
          'cell_text'=>'',
      ),
      array(
          'table_body_element'=>'cell',
          'cell_text'=>'Column 1',
      ),
      array(
          'table_body_element'=>'cell',
          'cell_text'=>'Column 2',
      ),
      array(
          'table_body_element'=>'cell',
          'cell_text'=>'Column 3',
      ),
      array(
          'table_body_element'=>'row',
          'cell_text'=>'',
      ),
      array(
          'table_body_element'=>'cell',
          'cell_text'=>'Column 11',
      ),
      array(
          'table_body_element'=>'cell',
          'cell_text'=>'Column 22',
      ),
      array(
          'table_body_element'=>'row',
          'cell_text'=>'',
      ),
    );

而且我尝试检查是否是行标记,并在其上添加tr标记。

这是我的foreach循环。

echo '<table><thead><tr>';
foreach ($cars as $item){
    echo '<td>'.$item[ 'cell_text' ].'</td>';
    if( $item[ 'table_body_element' ] == 'row' ){
        echo '</tr><tr>';
    }
}
echo '</tr></tbody></table>';

输出量

在此处输入图片说明

输出现在像这样显示。 使用不带td内容的快速空tr div以及不带内容的最后一个tr div打印。 我想删除此仅内容tr标签,并且需要在结果中打印td。

最好将foreach放在表中,在我看来,在foreach的末尾不好。 尝试这个:

echo '<table><tbody>';
foreach ($cars as $item){
    echo '<tr><td>'.$item[ 'cell_text' ].'</td>';
    if( $item[ 'table_body_element' ] == 'row' ){
        echo '</tr>';
    }
}
echo '</tbody></table>';

问题在于,即使row s,您总是总是首先放出单元格文本,并且当您在其中获得新行时,总是打开下一行。

echo '</tr><tr>';

至少您将其关闭,但是很难(不维护各种标志)来决定何时输出开始标签。

或者,这会建立每一行,然后在$rows数组中使用implode()在其周围添加<tr></tr>标记...

echo '<table><thead>';
$rows = [];
$row = '';
foreach ( $cars as $car )   {
    if ( $car['table_body_element'] == 'row' ) {
        if ( !empty($row) ) {
            $rows [] = $row;
            $row = '';
        }
    }
    else    {
        $row .= '<td>'.$car[ 'cell_text' ].'</td>';
    }
}
echo '<tr>'.implode( '</tr><tr>', $rows ).'</tr>';
echo '</tbody></table>';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM