Zend Framework 2 - 警告:SplFileObject::setCsvControl():转义必须是一个字符

Zend Framework 2 - Warning: SplFileObject::setCsvControl(): escape must be a character

您好,我正在尝试获取 csv 文件数据并在我的视图中显示该数据。

下面是我的控制器函数:

 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 格式获取所有数据。但我低于警告:

Warning: SplFileObject::setCsvControl(): escape must be a character

另外我想把这个数据转换成JSON或者数组格式可以吗?

主要概念是我想将此数据存储到我的数据库中 table。那么 suitable 在数据库中存储数据的格式是什么?请帮忙

如何解决这两个错误?

这个警告是因为你的 $escape 变量是两个字符而不是一个。

$escape = '/';

$escape = "//";

因为您只需要在使用双引号时转义反斜杠。

关于您关于如何存储在数据库中的问题。如果不知道您需要做什么以及 CSV 中有什么数据,就很难说。但是我建议在 CSV 列和数据库列之间建立一对一的映射。尽管您需要的表格数量实际上取决于数据和用例。在某些情况下,您可能只想存储原始数据,但又需要更多信息,并且仍然会给出一个自以为是的答案