我正在将CSV文件导入我的数据库。我想用列显示前5行,这样我就可以知道文件里面有什么。 所以下面我制作了一个快速脚本来打开文件。我计算列数,循环遍历列数,为每个列创建,然后在其下面抛出一个while()循环,以显示行。当然,我循环遍历列数以匹配。
我成功从文件中获取数据,我甚至得到了正确的列数。但它显示的是文件中间某处的结果,而不是前5条记录。
第一行帮助我知道列的名称(如果有列名)。
脚本很脏,我很好奇如何优化它。
<?
$filerow = $numcols =0;
if(is_file($targetDirectoryFile)){
$file_opened = fopen($targetDirectoryFile, "r"); // open the file
?>
<table class="itemstable" style="width:100%;">
<?
$getfileInfo = fgetcsv($file_opened);
$numcols = count($getfileInfo); // count columns
?>
<tr>
<? for($cols = 0; $cols < $numcols; $cols++ ){ // loop thru # of columns ?>
<th>Column <?=$cols+1;?></th>
<? } ?>
</tr>
<?
// feels like this could be done better.
while ($getfileInfo2 = fgetcsv($file_opened)){
$filerow++;
?>
<tr>
<? for($col = 0; $col < $numcols; $col++ ){ // loop thru # of columns ?>
<td><?=trim($getfileInfo2[$col]);?></td>
<? } ?>
</tr>
<?
if($filerow > 4){ break; fclose($file_opened); // stop and close after 5 loops }
}
echo '</table>';
//fclose($file_opened);
}
?>
答案 0 :(得分:0)
关于优化,你可以通过使用:
来摆脱循环中的if
语句
while ( ($getfileInfo2 = fgetcsv($file_opened)) && ($filerow < 5) )
{
我也不认为你的文件在break
语句后放置语句时会正确关闭,但我不知道这会如何导致你遇到的问题。
关于中间的输出;输入文件和生成的html是什么样的?