[英]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.