Anexe dados à linha / linha média de um csv em vez da última linha ou linha

Eu tenho um arquivo csv com alguns registros e cada registro possui identificação única. Estou executando um loop para encontrar essa ID exclusiva e, em seguida, append mais alguns dados nesse registro.

É possível fazer isso sem um arquivo temporário? Criar esse arquivo e mover todos os dados é preciso mais tempo …

Meu código é:

<?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'); 

Você pode usar o seguimento, mas você precisa passar o número da linha, ou seja, onde você precisa adicionar uma linha.

 < ?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); ?> 

Obtenha os dados do arquivo original como uma matriz ou string, faça suas modificações e simplesmente substitua o conteúdo do arquivo por seus dados modificados.