fgetcsv没有正确读取保存在linux系统中的csv文件

我试图通过CSV文件导入一些数据到我的数据库。 问题是,在开发的一开始,我使用Windows,所以我的csv文件写在MS Office上。 所以,当导入那里工作正常。 但切换到Linux(UBUNTU),同时保存CSV文件,它不显示数据,因为我想要的。 我也没有得到任何解决scheme。

这是由ms office在Windows机器上生成的csv生成的数组,它正常工作。

Array ( [0] => Array ( [0] => Student Name [1] => Student Roll [2] => Class [3] => Section [4] => Exam [5] => Subject [6] => Total Marks [7] => Grade [8] => Objective [9] => Subjective [10] => Practical ) [1] => Array ( [0] => Sample Name [1] => 123 [2] => Nine [3] => A [4] => Mid Term [5] => Math [6] => 80 [7] => A+ [8] => 40 [9] => 20 [10] => 20 ) ) 

但在Linux中我的CSV格式不能正常工作。 它将所有的数据推送到一个键和一个元素,如下所示。

 Array ( [0] => Array ( [0] => Student Name Student Roll Class Section Exam Subject Total Marks Grade Objective Subjective Practical ) [1] => Array ( [0] => Samp0le Name 123 Nine A Mid Term Math 80 A+ 40 20 20 ) ) 

所以我真正的问题是我怎样才能阅读呢?

这是我编码的上一代数组:

 $csv = array(); //$file = fopen('myCSVFile.csv', 'r'); ini_set("auto_detect_line_endings", true); while (($result = fgetcsv($fp)) !== false) { $csv[] = $result; } fclose($fp); echo '<pre>'; print_r($csv); echo '</pre>'; 

请帮助我,我真的很需要..

尝试这个

 $file = "FNAC_SPECTACLES.csv"; $handle = fopen($file, "r"); $row = 1; while (($data = fgetcsv($handle, 0, ";","'")) !== FALSE) { if($row == 1) { // skip the first row } else { echo "<pre>"; print_r($data); } $row++; } 

在分隔符的第三个参数中的fgetcsv()要保存在csv文件中。 例如:逗号,分号等。

您已将文件另存为 – separate values using tab而不是commas 。 再次save as相同的文件,并选择commas作为值分隔和double quotes作为值分隔符的分隔符。