首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用fputcsv覆盖列

用fputcsv覆盖列
EN

Stack Overflow用户
提问于 2010-02-28 21:34:43
回答 1查看 2.7K关注 0票数 1

我只想在csv文件中解析、处理和覆盖1个特定的列,前两个步骤我很好,但第三个步骤有问题。这是我到目前为止所知道的:

代码语言:javascript
复制
<?php
$fh = fopen("data.csv", "r");
$row = 1;
while (($data = fgetcsv($fh, 1024, ",")) !== FALSE) {
$get = $data[2];
$uc = ucwords(strtoupper($get));
echo $uc;
}
?>

这显示得很好,我只需要将处理后的内容写回到它的原始列中。我知道这是用fputcsv完成的,但我似乎不能让它工作:

代码语言:javascript
复制
$fp = fopen('data.csv', 'w');
fputcsv($fp, $uc, ",");
fclose($fp); 

这只会擦除整个文件。使用fwrite时也是如此。有什么想法吗?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-02-28 21:37:24

请注意,这两个函数都适用于lines,而不是整个文件。

所以当你写出来的时候,你必须重新构建它,就像这样:

代码语言:javascript
复制
<?php
$list = array (
   'aaa,bbb,ccc,dddd',
   '123,456,789',
   '"aaa","bbb"'
);

$fp = fopen('file.csv', 'w');

foreach ($list as $line) {
   fputcsv($fp, split(',', $line));
}

fclose($fp);
?>

未测试

代码语言:javascript
复制
<?php
$fh = fopen("data.csv", "r");
$row = 1;
$list=array();
while (($data = fgetcsv($fh, 1024, ",")) !== FALSE) {
    $data[2] = ucwords(strtoupper($data[2]));
    $list[]=$data; // collect lines
}
fclose($fh);

$fp = fopen('file.csv', 'w');

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

fclose($fp);
?>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2351179

复制
相关文章

相似问题

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