SplFileObjectを使います。

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

1
$csv = new SplFileObject(example.csv);
2
$csv->setFlags(SplFileObject::READ_AHEAD
3
              | SplFileObject::SKIP_EMPTY
4
              | SplFileObject::READ_CSV
5
              | SplFileObject::DROP_NEW_LINE
6
              );
7
8
foreach ($csv as $line) {
9
    $i = $line[0];
10
    $j = $line[1];
11
}

簡単ですね。

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

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