SplFileObjectを使います。

下記のようにsetFlagsで定義済みの定数を指定してからforeachで1行づつ読みます。

1
2
3
4
5
6
7
8
9
10
11
$csv = new SplFileObject(example.csv);
$csv->setFlags(SplFileObject::READ_AHEAD
| SplFileObject::SKIP_EMPTY
| SplFileObject::READ_CSV
| SplFileObject::DROP_NEW_LINE
);

foreach ($csv as $line) {
$i = $line[0];
$j = $line[1];
}

簡単ですね。

以下、指定できる定義済み定数です。(マニュアルより引用)

SplFileObject::DROP_NEW_LINE
行末の改行を読み飛ばします。
 
SplFileObject::READ_AHEAD
先読み/巻き戻しで読み出します。
 
SplFileObject::SKIP_EMPTY
ファイルの空行を読み飛ばします。期待通りに動作させるには、READ_AHEAD フラグを有効にしないといけません。
 
SplFileObject::READ_CSV
CSV 列として行を読み込みます。