PHPはジェネレータを使用してCSVファイルを処理する

387 ワード

function getRows($file){
    $handle =  fopen($file, 'rb');
    if($handle === false){
        throw new \Exception();
    }

    while (feof($handle) === false) {
        yield fgetcsv($handle);
    }
    fclose($handle);
}

foreach(getRows('data.csv') as $row){
    var_dump($row);
}

上記の例では、一度にCSVファイルの1行のみがメモリに割り当てられ、ファイル全体がメモリに読み込まれません.