帮助从两个文件中收集csv-one。合并类似单元格。下面显示了一个示例,也是我代码的一部分。我将非常感谢的帮助和提前感谢
csv1.csv=
name;price
Tom;1000
Anna;2000
Aleks;3000
Maikal;2000
Piter;5000
csv2.csv=
name;price
Tom;1200
Anna;2300
Andre;2000
Maikal2;2400
all.csv-生成的文件。
name;price;price
Aleks;3000;
Andre;;2000
Anna;2000;2300
Piter;5000;
Maikal;2000;
Maikal2;;2400
Tom;1000;1200
我有一个脚本,它只是基于一行粘贴文件。但它给出了不同的结果。
if(@$_FILES["DATAF_1"]["size"]>0 AND @$_FILES["DATAF_2"]["size"]>0)
{
$data=array();
function read_csv($file)
{
$out=array();
$lines = file($file);
foreach ($lines as $line_num => $line)
{
$out[]=explode(";",$line);
}
return $out;
}
function action_csv(&$array,$input)
{
for ($i=0; $i<count($input); $i++)
{
for ($i2=1; $i2<count($input[$i]); $i2++) {
if(trim($input[$i][0])!=""){$array[trim($input[$i][0])][]=trim($input[$i][$i2]);}
}
}
}
function form_csv($data)
{
$out=array();
foreach ($data as $line_num => $line)
{
$out[]=$line_num.";".implode(";",$line);
}
return implode("'r'n",$out);
}
$data1=read_csv($_FILES["DATAF_1"]["tmp_name"]);
$data2=read_csv($_FILES["DATAF_2"]["tmp_name"]);
action_csv($data,$data1);
action_csv($data,$data2);
@unlink("out.csv");
$fp = fopen ("out.csv", "w+");
fwrite ($fp, form_csv($data));
fclose ($fp);
我尝试了不带$_Files的代码(仅来自文件系统),它能工作。所以问题可能在上传的文件中,而不是在你发布的代码中。
编辑:所以现在它应该如你所愿:
function genAllIndexes(&$array,&$maxIndex){
foreach($array as &$line){
for($i = 0; $i < $maxIndex; $i++){
if(!isset($line[$i])){
$line[$i] = "";
}
}
ksort($line);
}
}
function action_csv(&$array,$input, &$counter){
for ($i=0; $i<count($input); $i++){
for ($i2=1; $i2<count($input[$i]); $i2++) {
if(trim($input[$i][0])!=""){
$array[trim($input[$i][0])][$counter]=trim($input[$i][$i2]);
}
}
}
$counter++;
}
$data1=read_csv('data1.csv');
$data2=read_csv('data2.csv');
$counter = 0;
action_csv($data,$data1, $counter);
action_csv($data,$data2, $counter);
genAllIndexes($data, $counter);
ksort($data);
@unlink("out.csv");
$fp = fopen ("out.csv", "w+");
fwrite ($fp, form_csv($data));
fclose ($fp);