-1

我有 2 个 csv:

第一个看起来像这样:

city , text
Seattle , [city][county]中间的[property ]并且有[citizens]公民

第二个看起来像这样:

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

我希望输出看起来像这样:

City , Text
Seattle ,西雅图金县中部的一个城市,拥有608.660名公民。

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

替换值后,输出将在新的 csv (csv3) 中打印。

提前致谢,

伊万

4

1 回答 1

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);

请注意,这没有经过测试,也没有进行任何完整性检查,您可能需要先整理一下。

于 2013-06-12T15:22:53.700 回答