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

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

[
[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"