如何正确使用内爆php

如何正确使用内爆php,php,csv,implode,Php,Csv,Implode,所以我有这个代码: $datas .= '"' . implode('", "', $body["id"].",".$body["prefecture_id"].",".$body["industry_id"].",".$body["offset"].",".$body["name"].",".$email . ",".$body["tel"].",".$body["fax"].",".$body["address"].",".$body["address_coordinate"].",".$b

所以我有这个代码:

$datas .= '"' . implode('", "', $body["id"].",".$body["prefecture_id"].",".$body["industry_id"].",".$body["offset"].",".$body["name"].",".$email . ",".$body["tel"].",".$body["fax"].",".$body["address"].",".$body["address_coordinate"].",".$body["url"].",".$body["image_url"].",".$body["flexible_1"].",".$body["flexible_2"].",".$body["flexible_3"].",".$body["flexible_4"].",".$body["flexible_5"].",".$body["flexible_6"].",".$body["flexible_7"].",".$body["flexible_8"].",".$body["flexible_9"].",".$body["flexible_10"].",".$body["sequence"].",".$body["del_flg"].",".$body["create_date"].",".$body["create_user"].",".$body["update_date"].",".$body["update_user"]).'"'."\r\n";
我希望它看起来像这样:

"KN01001","01","4","500","Starbuck's","admin@starbucks.com","09-232-821","09-232-822","Upper G/F SM, Juan Luna Extension"
问题是地址有逗号,所以这会把它分开

我真的无法正确地构建它。请帮忙

此代码来自CSV转换函数。在CSV文件中,每列用逗号分隔


但我的问题是,我有几个列也包含逗号。我希望列中的逗号保持原样。

与其滚动您自己的CSV编码函数,不如使用内置的fputcsv()

如果需要的话,您需要修改代码以对列进行排序,但这是基本方法(也不要忘记关闭$out)

要将整个CSV保存在内存中(如果这是文件下载/导出机制),可以打开php://output 而是直接写入/刷新到web服务器/浏览器

要直接回答您的问题,infrade()将数组作为第二个参数,但您已经给了它一个字符串,因此将其更改为此(并添加所有字段):

你能用fgetcsv()代替内爆吗?这将处理这个问题

$fileHandle = fopen("filename.csv", "r");
while (($row = fgetcsv($fileHandle, 0, ",")) !== FALSE) {
  var_dump($row);
  //$row is an array of all the columns in the csv regardless of commas in the dat
}

否则,如果必须使用内爆,则数据中包含逗号,并带有语音标记:“some date,with a comma”。如果是这样,您可以使用正则表达式忽略speechmarks中的逗号。我看不到您的数据,所以很难说。

发布您的CSV示例以及您希望如何生成它。
内爆(“,”,$body)
这是否也能解决数据超过数百万条记录时超时的问题?这可能会解决php消耗大量内存的问题。至于超时,它取决于它发生的位置、web服务器堆栈以及PHP和web服务器中配置的所有各种超时值。
$datas .= '"' . implode('", "', [$body["id"],  $body["prefecture_id"], $body["industry_id"], $body["offset"], ...]) . "\"\r\n";
$fileHandle = fopen("filename.csv", "r");
while (($row = fgetcsv($fileHandle, 0, ",")) !== FALSE) {
  var_dump($row);
  //$row is an array of all the columns in the csv regardless of commas in the dat
}