我有一个包含一些记录的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');
答案 0 :(得分:1)
您可以使用以下内容,但需要传递行号,即需要添加行的位置。
<?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);
?>
答案 1 :(得分:0)
将数据作为数组或字符串从原始文件中取出,进行修改,然后使用修改后的数据覆盖文件内容。