【问题标题】:Append data to middle line/row of a csv instead of the last line or row将数据附加到 csv 的中间行/行而不是最后一行或行
【发布时间】:2015-07-12 01:00:22
【问题描述】:

我有一个包含一些记录的 csv 文件,每条记录都有唯一的 ID。我正在运行一个循环来查找该唯一 ID,然后将更多数据附加到该记录。

是否可以在没有临时文件的情况下执行此操作?创建此类文件并移动其中的所有数据需要更多时间...

我的代码是:

<?php 
$temp = fopen('tempwin.csv','w+');

if (($handle = fopen("win.csv", "r+")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        $row++;

        for ($c=0; $c < $num; $c++) {                        
            if($data[4] == trim($leadid)){
                $data[5] = trim($_POST['year']);
                $data[6] = trim($_POST['make']);
                $data[7] = trim($_POST['model']);
                $data[8] = trim($_POST['trade']);
            }
        }

        fputcsv($temp, $data);
    }

    fclose($handle);
    fclose($temp);
}

unlink('win.csv');
rename('tempwin.csv','win.csv');

【问题讨论】:

    标签: php file csv


    【解决方案1】:

    从原始文件中取出数据作为数组或字符串,进行修改,然后简单地用修改后的数据覆盖文件的内容。

    【讨论】:

      【解决方案2】:

      您可以使用以下,但您需要传递行号,即您需要添加行的位置。

      <?php
      //A helping function to insert data at any position in array.
      function array_insert($array, $pos, $val)
      {
          $array2 = array_splice($array, $pos);
          $array[] = $val;
          $array = array_merge($array, $array2);
      
          return $array;
      }
      
      //What and where you want to insert
      $DataToInsert = '11,Shamit,Male';
      $PositionToInsert = 3;
      
      //Full path & Name of the CSV File
      $FileName = 'data.csv';
      
      //Read the file and get is as a array of lines.
      $arrLines = file($FileName);
      
      //Insert data into this array.
      $Result = array_insert($arrLines, $PositionToInsert, $DataToInsert);
      
      //Convert result array to string.
      $ResultStr = implode("\n", $Result);
      
      //Write to the file.
      file_put_contents($FileName, $ResultStr);
      ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-11-20
        • 2019-10-17
        • 2021-04-18
        • 1970-01-01
        • 1970-01-01
        • 2012-01-05
        • 2021-01-14
        相关资源
        最近更新 更多