php - php 从动态 td tr 创建表
问题描述
我试图从具有动态行单元格的动态数组创建一个表。
当在数组中找到行时,它将<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 需要在结果中打印。
解决方案
问题是你总是先输出单元格文本,即使是row
s,当你得到一个新行时,你总是打开下一行......
echo '</tr><tr>';
至少你关闭它,但很难(不维护各种标志)决定何时输出开始标签。
或者,这会建立每一行,然后使用数组implode()
在它们周围$rows
添加<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>';
推荐阅读
- sharepoint - 具有两个共享点链接列表的 MS Access - 如何将数据从一个列表更新到另一个列表?
- javascript - 如何只允许管理员类型的用户使用 Firestore 数据库登录我的反应网站
- java - 自动取款机 - 分发数量有限的纸币,未正确分发
- laravel - 这是 laravel 和 vue 的正常模式吗?
- flutter - 应用购买未在商店中显示订阅的产品
- if-statement - 这有什么问题?if 语句
- python - 为什么这不能正确地将 xarray 中的数据数组转换为 nans?
- wordpress - 当我对后端进行更改时,我的 wordpress 前端没有更新
- node.js - 别名与您的关联 Node js + sequelize 中定义的别名不匹配
- swiftui - 您如何判断用户何时滚动到 LazyVGrid 的底部?