亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

PHP快速按行讀取CSV大文件的封裝類分享(也適用

2020-03-22 19:50:06
字體:
來源:轉載
供稿:網友
PHP PHP快速按行讀取CSV大文件的封裝類分享(也適用于其它超大文本文件)
CSV大文件的讀取已經在前面講述過了(PHP按行讀取、處理較大CSV文件的代碼實例),但是如何快速完整的操作大文件仍然還存在一些問題。1、如何快速獲取CSV大文件的總行數?辦法一:直接獲取文件內容,使用換行符進行拆分得出總行數,這種辦法對小文件可行,處理大文件時不可行;
辦法二:使用fgets一行一行遍歷,得出總行數,這種辦法比辦法一好一些,但大文件仍有超時的可能;
辦法三:借助SplFileObject類,直接將指針定位到文件末尾,通過SplFileObject::key方法獲取總行數,這種辦法可行,且高效。具體實現方法:
復制代碼 代碼如下:
$csv_file = 'path/bigfile.csv';
$spl_object = new SplFileObject($csv_file, 'rb');
$spl_object- seek(filesize($csv_file));
echo $spl_object- key();

2、如何快速獲取CSV大文件的數據?仍然使用PHP的SplFileObject類,通過seek方法實現快速定位。
復制代碼 代碼如下:
$csv_file = 'path/bigfile.csv';
$start = 100000;// 從第100000行開始讀取
$num = 100;// 讀取100行
$data = array();
$spl_object = new SplFileObject($csv_file, 'rb');
$spl_object- seek($start);
while ($num-- && !$spl_object- eof()) {
$data[] = $spl_object- fgetcsv();
$spl_object- next();
}
print_r($data);
3、綜合上面兩點,整理成一個csv文件讀取的類:
復制代碼 代碼如下:
html' target='_blank'>class CsvReader {
private $csv_file;
private $spl_object = null;
private $error;

public function __construct($csv_file = '') {
if($csv_file && file_exists($csv_file)) {
$this- csv_file = $csv_file;
}
}

public function set_csv_file($csv_file) {
if(!$csv_file || !file_exists($csv_file)) {
$this- error = 'File invalid';
return false;
}
$this- csv_file = $csv_file;
$this- spl_object = null;
}

public function get_csv_file() {
return $this- csv_file;
}

private function _file_valid($file = '') {
$file = $file ? $file : $this- csv_file;
if(!$file || !file_exists($file)) {
return false;
}
if(!is_readable($file)) {
return false;
}
return true;
}

private function _open_file() {
if(!$this- _file_valid()) {
$this- error = 'File invalid';
return false;
}
if($this- spl_object == null) {
$this- spl_object = new SplFileObject($this- csv_file, 'rb');
}
return true;
}public function get_data($length = 0, $start = 0) {
if(!$this- _open_file()) {
return false;
}
$length = $length ? $length : $this- get_lines();
$start = $start - 1;
$start = ($start 0) ? 0 : $start;
$data = array();
$this- spl_object- seek($start);
while ($length-- && !$this- spl_object- eof()) {
$data[] = $this- spl_object- fgetcsv();
$this- spl_object- next();
}
return $data;
}

public function get_lines() {
if(!$this- _open_file()) {
return false;
}
$this- spl_object- seek(filesize($this- csv_file));
return $this- spl_object- key();
}

public function get_error() {
return $this- error;
}
}
調用方法如下:
復制代碼 代碼如下:
include('CsvReader.class.php');$csv_file = 'path/bigfile.csv';$csvreader = new CsvReader($csv_file);$line_number = $csvreader- get_lines();$data = $csvreader- get_data(10);echo $line_number, chr(10);print_r($data);
其實,上述CsvReader類并不只針對CSV大文件,對于其他文本類型的大文件或超大文件同樣可用,前提是將類中fgetcsv方法稍加改動為current即可。PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美xxxx14xxxxx性爽| 亚洲欧美日韩国产精品| 国产精品∨欧美精品v日韩精品| 欧美成人三级视频网站| 青草青草久热精品视频在线观看| 91精品视频在线播放| 日本一欧美一欧美一亚洲视频| 91po在线观看91精品国产性色| 亚洲人成电影网站色| 欧美野外wwwxxx| 亚洲人午夜精品免费| 欧美成人免费一级人片100| 成人在线播放av| 热99精品只有里视频精品| 久久人人爽亚洲精品天堂| 亚洲国产美女精品久久久久∴| 亚洲国产精品va在线观看黑人| 韩曰欧美视频免费观看| 精品女厕一区二区三区| 久久精品电影网站| 国产精品久久久久久久av电影| 一区二区欧美亚洲| 色婷婷亚洲mv天堂mv在影片| 久久人人爽人人| 欧美午夜片欧美片在线观看| 久久久精品视频成人| 国产成人精品亚洲精品| 国产偷国产偷亚洲清高网站| 久久精品国产一区| 色婷婷av一区二区三区在线观看| 国产精品视频久久| 最近2019中文字幕一页二页| 欧美精品电影在线| 日韩亚洲精品电影| 不卡av电影在线观看| 成人激情免费在线| 日韩成人高清在线| 亚洲人成网站在线播| 久久精品国产一区二区三区| 国产精品视频中文字幕91| 国产一区二区视频在线观看| 国产精品国产福利国产秒拍| 视频一区视频二区国产精品| 97色在线视频| 欧美精品一区二区三区国产精品| 成人综合网网址| 亚洲成人激情视频| 久久精品国产电影| 欧美日韩午夜激情| 精品成人在线视频| 91精品久久久久久久| 国产视频精品免费播放| 欧美成人h版在线观看| 5278欧美一区二区三区| 国产z一区二区三区| 成人激情视频在线| 日韩精品久久久久久福利| 日韩精品免费在线视频观看| 另类少妇人与禽zozz0性伦| 国产精品久久久久7777婷婷| 欧美色xxxx| 国产精品色午夜在线观看| 91久久国产综合久久91精品网站| 国精产品一区一区三区有限在线| 国产一区二区三区在线免费观看| 国产精品成人久久久久| 国产剧情日韩欧美| 亚洲精品日韩欧美| 亚洲国产精品免费| 97超碰国产精品女人人人爽| 欧美激情性做爰免费视频| 欧美国产精品va在线观看| …久久精品99久久香蕉国产| 国产日韩在线一区| 精品日本高清在线播放| 高清亚洲成在人网站天堂| 亚洲黄色免费三级| 成人免费观看网址| 国产精品久久不能| 亚洲欧美成人在线| 欧美极品xxxx| 久久婷婷国产麻豆91天堂| 91精品久久久久久久久久入口| 久久综合久久88| 岛国av午夜精品| 国产精品免费视频xxxx| 国产欧美一区二区三区久久| 日韩av网站大全| 在线视频亚洲欧美| 精品久久久久久久久久久| 成人日韩在线电影| 国产成人久久久| 欧美夫妻性生活xx| 亚洲自拍偷拍网址| 国产日本欧美一区二区三区在线| 最近2019中文字幕mv免费看| 97婷婷大伊香蕉精品视频| 国产精品九九久久久久久久| 激情亚洲一区二区三区四区| 在线观看欧美成人| 亚洲色图综合网| 日韩在线观看免费全集电视剧网站| 日韩欧美亚洲一二三区| 久久精品视频播放| 日韩福利视频在线观看| 久久91精品国产91久久跳| 91精品国产99久久久久久| 欧美日韩国产一区二区| 高清一区二区三区四区五区| 亚洲国产精品久久久久| 国产suv精品一区二区三区88区| 久久免费视频在线| 亚洲人成网站999久久久综合| 国产精品自拍小视频| 中文字幕欧美精品在线| 在线观看91久久久久久| 91po在线观看91精品国产性色| 97碰碰碰免费色视频| 欧美激情va永久在线播放| 久久久久久久爱| 青青久久aⅴ北条麻妃| 国产精品91在线观看| 国产成人精品久久久| 精品一区二区三区电影| 欧美尺度大的性做爰视频| 亚洲精品国产精品自产a区红杏吧| 国产一区二区丝袜高跟鞋图片| 欧美成人午夜影院| 成人黄色大片在线免费观看| 亚洲第一区在线| 欧美性感美女h网站在线观看免费| 日韩精品福利网站| 亚洲第一页自拍| 日韩有码在线观看| 亚洲视频在线播放| 91久久久久久久久久久| 国产一区欧美二区三区| 成人av色在线观看| 国产欧美精品在线| 26uuu亚洲伊人春色| 日韩成人在线观看| 国产成人亚洲综合| 奇门遁甲1982国语版免费观看高清| 欧美麻豆久久久久久中文| 日韩亚洲国产中文字幕| 日韩欧美国产免费播放| 亚洲影院色在线观看免费| 91国内在线视频| 国产精品2018| 7m第一福利500精品视频| 亚洲精品www| 亚洲一区中文字幕在线观看| 午夜精品99久久免费| 国产精品久久一区| 美女福利视频一区| 欧美激情在线观看视频| 美女av一区二区三区| 欧美大学生性色视频| 国产亚洲欧洲高清一区| 久久艳片www.17c.com| 中文字幕一区电影| 亚洲精品国产精品乱码不99按摩| 成人免费网站在线| 成人在线观看视频网站|