我有和XML文件一样构造如下:
<Row>
<Cell><Data>Name</Data></Cell>
<Cell><Data>Surname</Data></Cell>
<Cell><Data>Email</Data></Cell>
</Row>
<Row>
<Cell><Data>Name</Data></Cell>
<Cell><Data>Surname</Data></Cell>
<Cell><Data>Email</Data></Cell>
</Row>
<Row>
<Cell><Data>Name</Data></Cell>
<Cell><Data>Surname</Data></Cell>
<Cell><Data>Email</Data></Cell>
</Row>
<Row>
<Cell><Data>Name</Data></Cell>
<Cell><Data>Surname</Data></Cell>
<Cell><Data>Email</Data></Cell>
</Row>
我想要做的是使用PHP将它们添加到表中,到目前为止我编写了这段代码:
<?php
$dom = new DomDocument();
$dom -> load("file.xml");
$data = $dom->getElementsByTagName('Data');
echo( "<table><tr>");
foreach( $data as $node){ echo( "<td>". $node -> textContent . "<td>");}
echo( "</tr></table>");
?>
问题是它将所有数据附加到td标签上,这些标签变得非常长,我需要它做的是在读取的3个数据标签之后添加一个tr标签。
它目前正在创建类似:
<table>
<tr>
<td>Name</td><td>Surname</td><td>Email</td>
<td>Name</td><td>Surname</td><td>Email</td>
<td>Name</td><td>Surname</td><td>Email</td>
<td>Name</td><td>Surname</td><td>Email</td>
</tr>
</table>
我需要它
<table>
<tr><td>Name</td><td>Surname</td><td>Email</td></tr>
<tr><td>Name</td><td>Surname</td><td>Email</td></tr>
<tr><td>Name</td><td>Surname</td><td>Email</td></tr>
<tr><td>Name</td><td>Surname</td><td>Email</td></tr>
</table>
HELP! : - )
答案 0 :(得分:3)
稍微更改for
循环:
$n = 0;
foreach($data as $node)
{
if($n % 3 == 0) { echo '<tr>'; }
echo( "<td>". $node -> textContent . "<td>");
if(++$n % 3 == 0) { echo '</tr>'; }
}
并删除您已经拥有的开始和结束tr
答案 1 :(得分:0)
这涉及对代码的简单编辑。如您所希望的那样 每个第三个条目,您只需要在循环内移动<tr>
。
这可以解决您的问题:
<?php
$dom = new DomDocument();
$dom -> load("file.xml");
$data = $dom->getElementsByTagName('Data');
$counter = 0; // Set the entry counter
echo( "<table>");
foreach($data as $node) {
if ($counter % 3 == 0) {
echo '<tr>';
}
echo "<td>". $node -> textContent . "<td>";
if($counter % 3 == 0) {
echo '</tr>';
}
$counter++; // Increment the counter
}
echo( "</table>");
?>
这不是最干净的代码,但应该有效。