

タイトルの通りなんですが、配列をうまい感じにCSVに変換する方法を教えてください。

関数を通すだけで必要な場合にであればダブルクオーテーションで閉じてくれたりするのが理想です。  
また、fputcsvのようなファイルを出力するタイプではなく、文字列として返してくれるものがよいです。

[code]

    [
    [1,"hoge","fuga","piyo\npiyo"],
    [2,"hoge","fuga","piyo\npiyo"],
    [3,"hoge","fuga","piyo\npiyo"]
    ];
    
    
    ↓
    
    1,hoge,fuga,"piyo\npiyo"
    2,hoge,fuga,"piyo\npiyo"
    3,hoge,fuga,"piyo\npiyo"
    
[/code]


CC BY-SA 3.0
2015-03-06T08:05:53.973
7540
2015-03-06T11:36:37.830
7339
question
php csv
phpで配列をcsvに変換する関数、またはライブラリはありますか?


未検証ですが`fputcsv`をメモリに出力すればできるようです。  
あとはファイルと同様にアクセスできます。

[code]

    $fp = fopen('php://memory', 'r+');
    
    foreach($csv_data as $line){
        fputcsv($fp, $line);
    }
    
    rewind($fp);
    
    while( !feof($fp) ) {
        print(fgets($fp, 1024));
    }
    
    fclose($fp);
    
[/code]

参考：[fputcsvの結果をファイルに書き込まず変数に格納する](http://blog.katanyan.com/763/)


CC BY-SA 3.0
2015-03-06T08:37:55.363
7541
2015-03-06T08:37:55.363
7214
7540
answer


PHPにはstr_getcsvはあるのに、str_putcsvはありません。なんでもありのPHPにしては珍しいです。なのでメモリに書き込んでから、読み出すしかないと思います。ただSplFileObjectという便利なクラスがありますので、それを使ってみるのはどうでしょう。

[code]

    $csv = new SplFileObject('php://memory', 'wr+');
    
    $csv->fputcsv([1,"hoge","fuga","piyo\npiyo"]);
    $csv->fputcsv([2,"hoge","fuga","piyo\npiyo"]);
    $csv->fputcsv([3,"hoge","fuga","piyo\npiyo"]);
    
    foreach($csv as $text) {
        echo $text;
    }
    
[/code]


CC BY-SA 3.0
2015-03-06T11:36:37.830
7553
2015-03-06T11:36:37.830
2571
7540
answer