SplFileObject を拡張して CSV を開き、連想配列を持つクラスを作成します。csvファイルがCR改行を使用している場合は機能しますが、機能しません。
次のように文字列の改行を変換できることは知っています。
$string = str_replace($this::CRLF, $string::LF, $file);
$string = str_replace($this::CR, $string::LF, $file);
しかし、コンストラクターで改行をどのように変換できるのか疑問に思っていました。
ファイルの作成方法:
$file = new CSVFile(__DIR__ . '/../../Resources/data/myfile.csv');
クラス CSVFile.php
use \SplFileObject;
class CSVFile extends SplFileObject
{
private $keys;
public function __construct($file)
{
parent::__construct($file);
$this->setFlags(SplFileObject::READ_CSV);
}
public function rewind()
{
parent::rewind();
$this->keys = parent::current();
parent::next();
}
public function current()
{
return array_combine($this->keys, parent::current());
}
public function getKeys()
{
return $this->keys;
}
}