<?php header("Content-type:text/html;charset=utf-8"); $item=array(array(1,2,3,4), array(0,0,0,0),array(0,0,0,0),array(0,0,0,0),array(0,0,0,0),array(0,0,0,0),array(0,0,0,0)); ini_set('max_execution_time',300); $cate;$item;$value;$us; $fp = fopen("into0.csv","a"); if (flock($fp,LOCK_EX)){ foreach ($item as $line){ @fputcsv($fp,array($line[0],$line[1],$line[2],$line[3])); //sleep(1); } echo "成功!"; flock($fp,LOCK_UN); }else{ echo '文件正在使用,请稍后 !'; } fclose($fp); ?>
1.php数据创建CSV文件
此函数使用fputcsv PHP内置函数生成逗号分隔文件(.CSV).该函数有3个参数:数据,分隔符和CSV enclosure,默认是双引号。
function generateCsv($data,$delimiter=',',$enclosure='"'){ $handle = fopen('php://temp','r+'); foreach($data as $line){ fputcsv($handle,$line,$delimiter,$enclosure); } rewind($handle); while(!feof($handle)){ $contents .=fread($handle,8192); } fclose($handle); return $contents; }
用法
$data[0] = "apple"; $data[1] = "oranges"; generateCsv($data,$delimiter=',',$enclosuer='"');
2.php写入和读取数据到CSV文件
$row = 0; ini_set('max_execution_time',300); $cate;$item;$value;$us; $fp = fopen("into.csv","a"); if(($handle = fopen("USER.csv","r"))!== FALSE){ while (($data = fgetcsv($handle,1000,","))!==FALSE){ $num = count($data);//列数 $row++; for($c=0;$c<$num;$c++){ if($c==0){ $us = $data[$c];//第一列数据 //print_r ($us) ; } if($c==1){ $item = explode(" ",$data[$c]);//第2列数据 echo "<PRE>"; print_r($data[$c]); }elseif($c==2){ $value=$data[$c];//第3列数据 }elseif($c==3){ $cate1=$data[$c];//第4列数据 }else{ } }//end of for loop if($row > 1838){ exit; } @fputcsv($fp,array($us,$item[0],$item[1],$item[2],$item[3])); }//End of While }//End of If fclose($handle); fclose($fp);
这个跟fputcsv无关,而主要的关键在于你打开文件的模式,你需要使用 a 或是 a+ 模式打开文件。
'a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'a+' 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
$fp = fopen('file.csv', 'a+'); foreach($stu as $data); { fputcsv($fp,$data); //每次写入一组数据到csv文件中的一行 }