首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于CSV写入的一个字段中的新行

问用于CSV写入的一个字段中的新行
EN

Stack Overflow用户
提问于 2014-05-27 13:18:50
回答 1查看 83关注 0票数 0

我在csv出口部的工作不多,现在我有问题了。我有这样的事情:

代码语言:javascript
复制
['client']=>
  ['name']=>'John',
  ['surname']=>'Doe',
  ['things']=>
    [0]=>'jacket',
    [1]=>'shoes',
    [2]=>'hat'

当我为csv解析ti时,我得到

代码语言:javascript
复制
name | surname | things
John | Doe     | jacket, shoes, hat

我想让

代码语言:javascript
复制
name | surname | things
John | Doe     | jacket
                 shoes
                 hat

有什么方法可以在PHP中实现吗?

编辑:我试过这样做:

代码语言:javascript
复制
$client['things'] = ",".implode(",", $client['things']);

我也试过这个

代码语言:javascript
复制
$client['things'] = ",".implode("\n", $client['things']);

还有这个

代码语言:javascript
复制
$client['things'] = ",".implode("\r", $client['things']);

而且它没有正常工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-27 14:35:48

CSV不支持嵌套的值集。

也符合用于CSV格式的RFC

每个记录都位于一个单独的行上,由一个断行(CRLF)分隔。

和

包含换行符(CRLF)、双引号和逗号的字段应该用双引号括起来.

您必须导出未转义的新行分隔符、逗号和引号,我建议您使用fputcsv()函数为大多数程序和库生成有效和正确的CSV。

例如:

代码语言:javascript
复制
<?php
$row = array(
    'name' => 'John',
    'surname' => 'Doe',
    'things' => array('jacket', 'shoes', 'hat'),
);
$row = array_map(function ($value) {
    return is_array($value) ? implode(',', $value) : $value;
}, $row);
$output = fopen('php://output', 'w');
fputcsv($output, $row);

输出:John,Doe,"jacket,shoes,hat"与CRLF结束。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23890551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档