首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用php组合csv文件

使用php组合csv文件
EN

Stack Overflow用户
提问于 2013-11-26 12:21:07
回答 1查看 157关注 0票数 0

帮助收集从两个文件csv -1。合并类似的细胞。下面是一个示例,也是我代码的一部分。我将非常感谢您的帮助和提前感谢。

csv1.csv =

代码语言:javascript
复制
name;price
Tom;1000
Anna;2000
Aleks;3000
Maikal;2000
Piter;5000

csv2.csv =

代码语言:javascript
复制
name;price
Tom;1200
Anna;2300
Andre;2000
Maikal2;2400

all.csv -结果文件。

代码语言:javascript
复制
name;price;price
Aleks;3000;
Andre;;2000
Anna;2000;2300
Piter;5000;
Maikal;2000;
Maikal2;;2400
Tom;1000;1200

我有一个脚本,它简单地基于1行粘贴文件。但它给出了不同的结果。

代码语言:javascript
复制
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);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-26 12:50:22

我在没有$_Files的情况下尝试了您的代码(只是来自文件系统),它可以工作。所以问题可能在文件上传中,而不是在您发布的代码中。

编辑:所以现在它应该按照您的意愿工作:

代码语言:javascript
复制
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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20216964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档