我正在尝试通过csv文件将一些数据导入我的数据库。问题是,在开发的最初阶段,我使用的是Windows,因此我的csv文件是在ms office上编写的。因此在导入时它工作正常。但是在保存csv文件的同时切换到linux(UBUNTU)它并没有像我想要的那样显示数据。我也没有得到任何解决方案。
这是由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>';
请帮帮我,实际上我非常需要..
答案 0 :(得分:1)
试试这个
$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文件中。例如:逗号,分号等。
答案 1 :(得分:0)
您已将文件保存为 - separate values using tab
,而不是commas
。
再次save as
同一个文件,选择commas
作为delimiter
作为值分隔,选择double quotes
作为值分隔符。