【发布时间】:2012-03-25 14:27:18
【问题描述】:
我有一个这样的 csv 文件,names.csv:
"id","name"
"1","John"
"2","Joe"
"3","Peter"
"4","Frank"
"5","Bill"
...
"2","Steve"
"5","James"
"2","Mark"
"4","Anthony"
我想合并具有相同“id”的“行”,所以我得到以下结果:
"id","name"
"1","John"
"2","Joe , Steve , Mark"
"3","Peter"
"4","Frank , Anthony"
"5","Bill , James"
我想用 php 语言来做这件事,但我没有得到解决方案。 我自己编写了一些代码,但这对我的服务器主机来说非常有用(循环中的循环):
$myFile = "merged-names.csv";
$fh = fopen($myFile, 'w') or die("can't open file");
if (($handle = fopen("names.csv", "r")) !== FALSE)
{
$line = fgets($handle);
$val = explode(",", $line);
$max = (count($val))/2;
for ($i=0; $i <= $max; $i+2)
{
$id = $val[$i];
$name = $val[$i+1];
$stringData = "\"".$id."\"".",";
fwrite($fh, $stringData);
$stringData = "\"".$name."\"";
fwrite($fh, $stringData);
for ($e=0; $e <= $max; $e+2)
{
if (strcmp($id, $val[$e]) == 0)
{
if($i != $e)
{
$stringData = "\"".$val[$e+1]."\"";
fwrite($fh, $stringData);
}
}
}
$stringData = "<br>";
fwrite($fh, $stringData);
}
fclose($handle);
}
有人可以帮我找到正确的解决方案吗,看起来很简单,问题? 提前谢谢!
【问题讨论】: