我有2个csv:
第一个看起来像这样:
城市,文字
西雅图, [city] 在 [县] 中间 [property] ,并且 [citizen] 公民
第二个看起来像这样:
城市,财产,县,公民
西雅图,市,金县,608.660
我认为输出看起来像这样:
城市,文字
西雅图,西雅图是金县中的城市,并且 608.660 公民。
逻辑是这样,组合两个csv,读取它们,如果城市名称相同,则将“Text”列下第一个csv中的所有字符串[值名称]替换为具有相同值名称的值出现在csv2中。
更换值后,输出将以新的csv(csv3)打印。
提前致谢,
伊万
答案 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);
请注意,这未经过测试,也没有进行任何健全性检查,您可能希望先将其整理一下。