2016-12-30 98 views
0

嗨我想獲取csv文件數據並在我的視圖中顯示該數據。Zend Framework 2 - 警告:SplFileObject :: setCsvControl():轉義必須是一個字符

下面是我的控制器功能:

public function indexAction() 
    { 
     $delimiter = ','; 
     $enclosure = '""'; 
     $escape = '//'; 
     $filename = 'data' . DIRECTORY_SEPARATOR . 'csv' . DIRECTORY_SEPARATOR . 'StoreDepartment.csv';; 
     $this->file = new SplFileObject($filename); 
     $this->file->setFlags(SplFileObject::READ_CSV | SplFileObject::READ_AHEAD | SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE); 

     $this->file->setCsvControl($delimiter, $enclosure, $escape); 
     $this->useFirstRecordAsHeader = true; 

     $response = $this->getResponse(); 
     $headers = $response->getHeaders(); 
     $headers->addHeaderLine('Content-Type', 'text/csv'); 
     $contents = $this->file->fread($this->file->getSize()); 
     $response->setContent($contents); 
     $views = new ViewModel(array('text'=>$response)); 
     return $views;  
    } 

我得到的所有數據爲csv。但我得到以下警告:

警告:SplFileObject :: setCsvControl():逃生必須是字符

此外,我想這個數據轉換成JSON或陣列格式這可能嗎?

主要概念是我想將這些數據存儲到我的數據庫表中。那麼什麼格式適合在數據庫中存儲數據呢?請幫忙

如何解決這兩個錯誤?

回答

1

警告是因爲你的$ escape變量是兩個字符而不是一個。

$escape = '/'; 

$escape = "//"; 

因爲只使用了雙引號需要轉義反斜線。

至於你關於如何存儲在數據庫中的問題。不知道你需要做什麼以及CSV中的數據是很難說的。不過,我建議在CSV列和數據庫列之間建立一對一映射。儘管您需要的表的數量實際上取決於數據和用例。還有一些情況下,你可能只想存儲原始數據,但需要更多的信息,它仍然是一個自以爲是的答案,將給予

+0

我已經改變了$ escape ='//';到$ escape ='/';一個,但它不工作仍然給出同樣的錯誤。你可以幫我嗎 ? –

相關問題