2015-04-07 137 views
7

分開後,我已經與以下結構的CSV文件:PHP處理CSV文件,用分號

a; b; c,c c; d 

當我嘗試處理它,它說偏移2和3是不確定的。花了我一段時間才意識到這是由,造成的,不知道如何解決這個問題。如果我刪除,一切運行良好。

這是我的處理功能:

function process_csv($file) { 

    $file = fopen($file, "r"); 
    $data = array(); 

    while (!feof($file)) { 
     $csvdata = fgetcsv($file); 

     $data[] = explode(';', $csvdata[0]); 
    } 

    fclose($file); 
    return $data; 
} 

試圖fgetcsv($file);fgetcsv($file, '"');,但沒有幫助。

+5

隔板是第三個參數['fgetcsv'(http://php.net/fgetcsv)。 – mario

+0

謝謝你突出顯示! –

回答

7

你的問題是,fgetcsv默認使用,作爲分隔符。您需要將其更改爲;。然後,你將不必再explode :)

function process_csv($file) { 

    $file = fopen($file, "r"); 
    $data = array(); 

    while (!feof($file)) { 
     $data[] = fgetcsv($file,null,';'); 
    } 

    fclose($file); 
    return $data; 
} 
+0

哇,恥辱我!我做錯了一切。這一定是我無法找到任何與我的問題有關的話題的原因:)非常感謝你,現在一切正常,因爲它應該是! –

+3

@Marc,我建議保留$ data的聲明。首先,您確定它已正確初始化,其次,如果文件中沒有行,則聲明不會發生,並且返回值爲null。 –

+0

但這是正確的 – Marc