因此,我一直在尝试在PHP中使用foreach
循环来读取和显示CSV文件的内容。这就是我目前所拥有的:
$file = file("games.csv");
foreach($file as $k)
$csv = explode(',',$k);
echo "<tr>
<td>$csv[0]</td>
<td>$csv[1]</td>
<td>$csv[2]</td>
<td>$csv[3]</td>
<td>$csv[4]</td>
</tr>";
?>
它可以工作,但只显示CSV文件中的最后一条记录。为什么会这样?在我理解原因之前,我认为我无法解决问题并显示所有记录。
在foreach
的主体周围添加大括号{
}
。您使用的语法意味着只有第一行循环。
foreach($file as $k) {
$csv = explode(',',$k);
echo "<tr>
<td>$csv[0]</td>
<td>$csv[1]</td>
<td>$csv[2]</td>
<td>$csv[3]</td>
<td>$csv[4]</td>
</tr>";
}
试着这样做,在当前语法中,它会将第一行视为foreach主体的一部分,这就是它只回显CSV文件的最后一行的原因。
<?php
$file = file("games.csv");
foreach($file as $k)
{
$csv = explode(',',$k);
echo "<tr>
<td>$csv[0]</td>
<td>$csv[1]</td>
<td>$csv[2]</td>
<td>$csv[3]</td>
<td>$csv[4]</td>
</tr>";
}
?>
这就是为什么所有控制块(if和循环)都应该用大括号包装。。。您的代码只循环foreach后面的第一条语句。
$file = file("games.csv");
foreach($file as $k) {
$csv = explode(',',$k);
echo "<tr>
<td>$csv[0]</td>
<td>$csv[1]</td>
<td>$csv[2]</td>
<td>$csv[3]</td>
<td>$csv[4]</td>
</tr>";
}
?>