好的,这是我到目前为止所得到的:
<table class="tftable" border="1">
<tr><th>Header 1</th><th>Header 2</th><th>Header 3</th><th>Header 4</th><th>Header 5</th><th>Header 6</th><th>Header 7</th></tr>
<?php
define('CSV_PATH','/Applications/XAMPP/xamppfiles/htdocs/SITEPREVIEW/csv_file_drop_folder/');
$csv_file = CSV_PATH . "test.csv";
if(($handle=fopen($csv_file,"r"))!== FALSE){
fgetcsv($handle);
while(($data=fgetcsv($handle,1000,","))!==FALSE){
$num = count($data);
for($c=0;$c<$num;$c++){
$col[$c]=$data[$c];
}
$col1=$col[0];
$col2=$col[1];
$col3=$col[2];
$col4=$col[3];
$col5=$col[4];
$col6=$col[5];
$col7=$col[6];
echo "<tr><th>".$col1."</th><th>".$col2."</th><th>".$col3."</th><th>".$col4."</th><th>".$col5."</th><th>".$col6."</th><th>".$col7."</th></tr>";
}
fclose($handle);
}
?>
</table>
所以我运行此($data=fgetcsv($handle,1000,","))
即将出现FALSE
我认为,但不确定原因,因此只有标题会打印到页面上。
摆脱fgetcsv($handle);
,但只打印一行,我检查了.csv
文件的文件内容,这就是我所拥有的:
答案 0 :(得分:0)
摆脱这条线:
fgetcsv($handle);
那是:
if(($handle=fopen($csv_file,"r"))!== FALSE){
while ( ( $data = fgetcsv($handle, 1000, ",") ) !== FALSE ) {
如果只打印一行,请检查csv上的行结尾。确保它们是/ n或/ r / n
注意:如果PHP在阅读时没有正确识别行结尾 Macintosh计算机上或由Macintosh计算机创建的文件,启用 auto_detect_line_endings运行时配置选项可能会有所帮助 解决问题。 http://php.net/manual/en/function.fgetcsv.php
我假设csv可能是在mac中生成的。我不是肯定的,但我相信发生的事情是你的第一个fgetcsv读取你的csv的第一行(也是唯一的),所以第二个,在while循环中,正确地注意到没有更多的行要读,所以返回FALSE,从而在开始之前终止循环。
如果csv是自动生成的,那么你想在这个问题上纠正这个问题,如果它是在Mac上创建的,理想情况下创建它的工具会被修正为使用unix样式\ n行结尾。如果不能轻易完成,只需在代码编辑器中打开csv,配置为保存/转换行结尾为unix样式,并在加载前保存。
LF:Multics,Unix和类Unix系统(Linux,OS X,FreeBSD,AIX, Xenix等),BeOS,Amiga,RISC OS等[1]
CR:Commodore 8位计算机,Acorn BBC,ZX Spectrum,TRS-80,Apple II系列,Mac OS至9版以及OS-9
https://en.wikipedia.org/wiki/Newline
我很好奇,看起来像OS 9使用的是Mac,但是OS X使用\ n,正如你所期望的那样。请注意,windows使用\ r \ n工作正常,因为\ r被忽略我相信并且\ n存在。