您的位置 首页 php

php利用生成器yield读取体积比较大的csv文件

/*
* 如果对 yield 生成器不熟悉的话,请阅读《modern php》 第2章
* 如果是excel文件,请现将其转换为 csv 文件
* 注意文件的 编码 
*
*///生成器
function getRows($ file )
{
 if(!file_exists($file))
 {
 die("文件不存在");
 }
 $handle = fopen($file, 'r');
 if($handle === false)
 {
 throw new Exception('open file error');
 }
 
 while(feof($handle) === false)
 {
 //读取一行数据
 yield fgetcsv($handle);
 }
 fclose($handle);
}

//转换编码格式,预防中文乱码
 function  convert_arr($arr)
{
 return array_map(function($v){
 return mb_convert_encoding($v,'utf-8','gb2312');
 }, $arr);
}

 foreach (getRows("abc.csv") as $k=>$row)
{
 if(is_array($row))
 {
 //转码
 $row = convert_arr($row);
 //
 file_put_contents("a.txt", json_encode($row,JSON_UNESCAPED_UNICODE)."\r\n", FILE_APPEND);
 }
 
}

 

文章来源:智云一二三科技

文章标题:php利用生成器yield读取体积比较大的csv文件

文章地址:https://www.zhihuclub.com/151345.shtml

关于作者: 智云科技

热门文章

网站地图