2016-05-15 111 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