我喜欢这个CSV:
SqlConnection myConnection = new SqlConnection();
SqlConnectionStringBuilder bu = new SqlConnectionStringBuilder();
bu.DataSource = @"<server>";
bu.InitialCatalog = "<database>";
bu.IntegratedSecurity = false;
bu.UserID = "<user id>";
bu.Password = "<password>";
myConnection.ConnectionString = bu.ConnectionString;
try
{
myConnection.Open();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
当我将CSV转换为这样的数组时:
1|bla.jpg|nature
2| |earth
然后我在while (($line = fgetcsv($handle, 1000, ';')) !== FALSE)
{
$data[] = $line;
}
中得到关注数组:
$data
但我需要这样:
array(2) {
[0]=>
array(3) {
[0]=>
string(1) "1"
[1]=>
string(7) "bla.jpg"
[2]=>
string(6) "nature"
}
[1]=>
array(1) {
[0]=>
string(163) "2"
}
}
如果一个字段为空,我如何继续解析CSV?
忽略它:我需要添加更多文字-.-
答案 0 :(得分:1)
答案 1 :(得分:0)
也许不要使用fgetcsv,但是读取整行并使用explode(';', $line)
分割每个逗号(或任何其他合适的分隔符; csv文件通常使用;但也可以使用,或tab)< / p>
答案 2 :(得分:0)
对我来说,这段代码按预期工作,
你应该尝试:
阅读其他CSV文件
检查CSV文件的编码是否正确(我认为它应该是UTF-8
编码)
检查,文件中的分隔符与代码中的分隔符相同
查看php文档: http://php.net/manual/en/function.fgetcsv.php
注意:如果PHP在阅读时没有正确识别行结尾 Macintosh计算机上或由Macintosh计算机创建的文件,启用 auto_detect_line_endings运行时配置选项可能会有所帮助 解决问题。
也许这个问题与用于创建此CSV文件的操作系统有关?
答案 3 :(得分:0)
使用file()将其作为数组读取,然后用“;”分解每一行。
// For demo purpose
$str = "1;bla.jpg;nature
2;;earth";
$arr = explode(PHP_EOL, $str);
// End
// $arr = file("file.csv");
Foreach($arr as &$line) $line = explode(";", $line);
Var_dump($arr);
由于目前尚不清楚。
$arr = file("file.csv");
Foreach(array_splice($arr,0,10) as &$line) $line = explode(";", $line);
Var_dump($arr);