从数组或对象在php中生成CSV

时间:2018-12-13 13:57:40

标签: php arrays csv ftp

我尝试生成CSV文件并将其发送到FTP帐户。

我的问题是填充CSV文件。

此代码运行良好,但是我只能在 $ fp 中传递字符串。当我尝试使用数组时,文件到达ftp帐户为空。

我不明白为什么。

此外,我现在尝试传递一个数组以进行测试,但是对我来说最好的是能够使用一个对象,我该如何生成此文件?

select parentcode
from t
group by parentcode
having min(ParentStatus) = max(ParentStatus) and
       min(ParentStatus) = 'Closed' and
       min(ChildStatus) = max(ChildStatus) and
       min(ChildStatus) = 'Closed' ;

1 个答案:

答案 0 :(得分:1)

此代码已经在创建要上传的文件。

$fp = fopen($Fname, 'w');

foreach ($list as $fields) {
    fputcsv($fp, $fields);
}

fclose($fp);

现在,您可以使用$Fname直接上传该文件(ftp_put):

$upload_result = ftp_put($ftp_conn, $remote_file, $Fname, FTP_ASCII);

所有带有php://temp的代码都是毫无意义的,因为它只是(尝试)创建文件的另一个副本-删除它。


尽管我认为您实际上是想避免完全创建本地文件。显然,您的代码基于Creating and uploading a file in PHP to an FTP server without saving locally

然后您需要执行以下操作:

$local_file = fopen('php://temp', 'r+');

foreach ($list as $fields) {
    fputcsv($local_file, $fields);
}

rewind($local_file);    

// ...

$upload_result = ftp_fput($ftp_conn, $remote_file, $local_file, FTP_ASCII);