2016-05-15 71 views
1

我不知道为什么我这么挣扎,但我试图访问由fgetcsv返回的数组中的字符串。我有这样的代码:访问由fgetcsv返回的字符串

if(($handle = fopen($path, "r")) !== FALSE) 
{ 
    if(($data = fgetcsv($handle, "\t")) !== FALSE); 
    { 
     var_dump($data); 

     foreach($data as $row) 
     { 
      list($cc, $pc, $pn, $an1, $ac1, $an2, $ac2, $lat, $lon) = explode(" ", $row); 
      var_dump($row); 
     } 
    } 

    fclose($handle); 
} 

的的$data产量var_dump

array(1) { 
    [0] => 
    string(46) "US  34050 FPO    AA  Erie 029         41.0375-111.6789  " 
} 

的的$row产量var_dump

string(46) "US 34050 FPO    AA  Erie 029      41.0375 -111.6789 

当我运行程序我得到一个错误,说Notice: undefined offset,具体是因为这条线:

list($cc, $pc, $pn, $an1, $ac1, $an2, $ac2, $lat, $lon) = explode(" ", $row); 

我很明显错过了一些东西,但我不知道它是什么。谁能帮我吗?

回答

0

PHP手册表明你没有传递正确的参数fgetcsv()

array fgetcsv (resource $handle [, int $length = 0 [, string $delimiter = "," [, string $enclosure = '"' [, string $escape = "\" ]]]]) 

它需要的分隔符前的长度。

未定义的偏移量是由于您给列表中的参数太多而造成的,与explode()的结果相比较。 var_export(explode(" ", $row));会使这一点显而易见。

+0

呃。出于某种原因,我认为长度是一个可选的参数。至于为list提供太多参数... * facepalm *。事实证明,这个CSV的前两个条目格式与其余格式稍有不同,我没有注意到。无论如何,感谢您的帮助。现在就开始工作吧! – LeviJames