加入2 CSV并替换PHP中的行值

时间:2013-06-12 15:01:37

标签: php string join csv replace

我有2个csv:

第一个看起来像这样:

城市,文字
西雅图, [city] [县] 中间 [property] ,并且 [citizen] 公民

第二个看起来像这样:

城市,财产,县,公民
西雅图,市,金县,608.660

我认为输出看起来像这样:

城市,文字
西雅图,西雅图金县中的城市,并且 608.660 公民。

逻辑是这样,组合两个csv,读取它们,如果城市名称相同,则将“Text”列下第一个csv中的所有字符串[值名称]替换为具有相同值名称的值出现在csv2中。

更换值后,输出将以新的csv(csv3)打印。

提前致谢,

伊万

1 个答案:

答案 0 :(得分:1)

这应该让你开始:

//Create an array of city->template
$handle = fopen("templates.csv", "r");
if($handle === false){
    die("Failed to open templates");
}
$templatesArr = array();
while (($data = fgetcsv($handle)) !== FALSE) {
    $templatesArr[$data[0]] = $data[1];//Probably don't want to hard code these here
}
fclose($handle);


//Loop through the data populating the templates.
$handle = fopen("data.csv", "r");
if($handle === false){
    die("Failed to open template data");
}
$outArr = array();
while (($data = fgetcsv($handle)) !== FALSE) {
    $city = $data[0];
    $template = $templatesArr[$city];
    //Replace template data with csv data.
    $template = str_replace(array('city','property','county','citizens'),array($city,$data[1],$data[2],$data[3]),$template);
    $outArr[$city] = $template;
}
fclose($handle);

请注意,这未经过测试,也没有进行任何健全性检查,您可能希望先将其整理一下。