首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PHP从csv文件创建多个阵列

使用PHP从csv文件创建多个阵列
EN

Stack Overflow用户
提问于 2016-09-13 17:05:10
回答 1查看 483关注 0票数 0

我有一个csv文件的1500+条目在一个列。我可以读取csv文件的所有值的列。

代码语言:javascript
复制
        $rowcount = 1;
        $srcFileName = "input/test.csv";
        $file = fopen($srcFileName,"r");
        $inputfielscount = count(file($srcFileName, FILE_SKIP_EMPTY_LINES));
        while($rowcount < $inputfielscount) 
        {
          $row = fgetcsv($file);
          $result=array("id" =>$row[0],"des"=>"I am jhon",salery="10000");
          $Final=array("listingsEmp"=>$result);
        }

在读取第一个(1-10)值后,我将创建一个数组(如数组=>$result),然后想重复(11-20)中的相同任务,并创建另一个数组(如数组1 =>$Final,这次$final数组包含我们从csv文件(11-10)读取的下一个i的信息),依此类推。

为了满足上述要求,我将代码更改为:

代码语言:javascript
复制
        $rowcount = 1;
        $srcFileName = "input/test.csv";
        $file = fopen($srcFileName,"r");
        while($rowcount < 20) 
        {

             if(($rowcount % 10 == 0) && ( $rowcount != 0)) {
                 $rowcount++;
                break;
             }else{

                  $row = fgetcsv($file);
                 // some curl code for fetching data according to csv file field(Id)
                  $result=array("id" =>$row[0],"des"=>"I am jhon",salery="10000"); //contain 10 array 

             }
        }

    $Final=array("listingsEmp"=>$result);

现在我将使用curl和get response发布这个$final数组,它有(0-10索引数组,每个数组都有唯一的id和相应的值),我将它保存在csv文件中。

代码语言:javascript
复制
        $currenttime=date("Y-m-d-H_i_s");   
        $opfile='output'.$currenttime.'.csv'; //path wher op csv file exist 
        if(!@copy($srcFileName,'/output/'.$opfile))
        {
            $errors= error_get_last();
            echo "COPY ERROR: ".$errors['type'];
            echo "<br />\n".$errors['message'];
        }else { //  echo "File copied from remote!";
            $fp = fopen('output/output'.$currenttime.'.csv',"a");
            $fr = fopen($srcFileName,"r");
            $rowcounts=0;
            $FinalRES=$Final->response;

            while($rowcounts< $inputfielscount) {
                    $resultBulk=$FinalRES[$rowcounts];
                    $resultBulkStatus=$FinalRES->status;
                    $resultBulkErrors=$FinalRES->errors;
                    $errorMsgArray=$resultBulkErrors[0];
                    $BulkErrorsMessage=$errorMsgArray->message;
                    $rows = fgetcsv($fr);
                        if($resultBulkStatus=='failure'){
                                    $list = array ($rows[0],$rows[1],$resultBulkStatus,$BulkErrorsMessage);
                        }else {
                                    $list = array ($rows[0],$rows[1],$resultBulkStatus,"successfully");
                        }
                    fputcsv($fp,$list);
                        //$p++;
                        $rowcounts++;
            }
        }

这个完整的代码运行一次,并给出10个id的响应,我想为下一个10 id(11-20)和(21-30)重复此代码,依此类推。一旦所有响应写入输出csv文件后,它显示下载输出文件链接,输出文件包含csv文件(1500 +)中所有is的完整响应

代码语言:javascript
复制
    <?php   $dnldfilw='output'.$currenttime.'.csv';?>
            <a href='download.php?filename=<?php echo $dnldfilw; ?>'>Download Output file</a>

        ?>
EN

回答 1

Stack Overflow用户

发布于 2016-09-13 17:15:52

最简单的方法是只使用您已经在使用的file()函数...因此,为了将代码缩短为一些伪代码:

代码语言:javascript
复制
<?php

    $indexedArray = array();
    $indexedSplit = 10;

    $lines = file($srcFileName);
    $tempArray = array();
    foreach($lines as $line) {
        if(count($tempArray) % $indexedSplit === 0) {
            $indexedArray[] = $tempArray;
            $tempArray = array();
        }
        $tempArray[] = $line;
    }

    foreach($indexedArray as $index => $valueArray) {
        // do the curl magic
        // write results of curl into csv
    }

你的问题表达得很糟糕,但我认为这将是你的目标,对吧?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39466134

复制
相关文章

相似问题

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