国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

? php教程 php手冊(cè) PHP快速按行讀取CSV大文件的封裝類(lèi)分享(也適用于其它超大文本文件)

PHP快速按行讀取CSV大文件的封裝類(lèi)分享(也適用于其它超大文本文件)

Jun 13, 2016 am 09:39 AM
csv php ??? ??

CSV大文件的讀取已經(jīng)在前面講述過(guò)了(PHP按行讀取、處理較大CSV文件的代碼實(shí)例),但是如何快速完整的操作大文件仍然還存在一些問(wèn)題。

1、如何快速獲取CSV大文件的總行數(shù)?

辦法一:直接獲取文件內(nèi)容,使用換行符進(jìn)行拆分得出總行數(shù),這種辦法對(duì)小文件可行,處理大文件時(shí)不可行;
辦法二:使用fgets一行一行遍歷,得出總行數(shù),這種辦法比辦法一好一些,但大文件仍有超時(shí)的可能;
辦法三:借助SplFileObject類(lèi),直接將指針定位到文件末尾,通過(guò)SplFileObject::key方法獲取總行數(shù),這種辦法可行,且高效。

具體實(shí)現(xiàn)方法:

復(fù)制代碼 代碼如下:


$csv_file = 'path/bigfile.csv';
$spl_object = new SplFileObject($csv_file, 'rb');
$spl_object->seek(filesize($csv_file));
echo $spl_object->key();



2、如何快速獲取CSV大文件的數(shù)據(jù)?

仍然使用PHP的SplFileObject類(lèi),通過(guò)seek方法實(shí)現(xiàn)快速定位。

復(fù)制代碼 代碼如下:


$csv_file = 'path/bigfile.csv';
$start = 100000;??// 從第100000行開(kāi)始讀取
$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、綜合上面兩點(diǎn),整理成一個(gè)csv文件讀取的類(lèi):

復(fù)制代碼 代碼如下:


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 ??$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;
?}
}


調(diào)用方法如下:

復(fù)制代碼 代碼如下:


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


其實(shí),上述CsvReader類(lèi)并不只針對(duì)CSV大文件,對(duì)于其他文本類(lèi)型的大文件或超大文件同樣可用,前提是將類(lèi)中fgetcsv方法稍加改動(dòng)為current即可。

?

?

? ????? ??
? ?? ??? ????? ???? ??? ??????, ???? ?????? ????. ? ???? ?? ???? ?? ??? ?? ????. ???? ??? ???? ???? ??? ?? admin@php.cn?? ?????.

? AI ??

Undresser.AI Undress

Undresser.AI Undress

???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover

AI Clothes Remover

???? ?? ???? ??? AI ?????.

Video Face Swap

Video Face Swap

??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

???

?? ??

?? : ????? ????? ??
4 ? ? ? By DDD
?? ?? ??
3 ? ? ? By Jack chen
???

??? ??

???++7.3.1

???++7.3.1

???? ?? ?? ?? ???

SublimeText3 ??? ??

SublimeText3 ??? ??

??? ??, ???? ?? ????.

???? 13.0.1 ???

???? 13.0.1 ???

??? PHP ?? ?? ??

???? CS6

???? CS6

??? ? ?? ??

SublimeText3 Mac ??

SublimeText3 Mac ??

? ??? ?? ?? ?????(SublimeText3)

???

??? ??

?? ????
1789
16
Cakephp ????
1731
56
??? ????
1582
29
PHP ????
1451
31
???
PHP ??? ?? ??? ??? PHP ??? ?? ??? ??? Jul 18, 2025 am 04:25 AM

PHP ??? ??? ?? ??? ????? php.ini? ???? ? ??? ???? ??? ??? ????? ????. 1. PHP ?? : Linux ? APT, Mac ? Homebrew ? Windows? ???? XAMPP ??; 2. php.ini ?? : ?? ???, ??? ?? ?? ???? ??? ?? ?????. 3. ? ?? ?? : Apache? mod_php? ???? nginx? php-fpm? ?????. 4. ?? ??? ???? ?? ????? ???? ?? : MySQLI, JSON, MBString ?? ?? ??.

PHP?? ?? ?? PHP?? ?? ?? Jul 18, 2025 am 04:57 AM

PHP ?? ???? ? ?? ???? ??? ????. 1. // ?? #? ???? ? ?? ??? ???? // ???? ?? ????. 2. ?? /.../ ?? ?? ?? ??? ????? ?? ? ?? ??? ?? ? ? ????. 3. ?? ?? ?? / if () {} /? ?? ?? ??? ????? ??? ?? ?? ?? ??? ???? ????? ???? ??? ?? ???? ???? ??? ? ??? ??????.

PHP ?? ?? ? PHP ?? ?? ? Jul 18, 2025 am 04:51 AM

PHP ??? ???? ??? ??? ??? ????? ????. ??? ????? ?? ???? ??? "?? ? ?"??? "?"? ???????. 1. ??? ? ??? ??? DocBlock (/*/)? ?? ?? ??? ???? ??? ? ?? ???? ??????. 2. JS ??? ???? ?? ???? ??? ?? ??? ??? ?????. 3. ??? ?? ?? ?? ??? ???? ????? ????? ???? ?? ????? ???? ? ??????. 4. Todo ? Fixme? ????? ???? ? ? ??? ??? ???? ?? ?? ? ??? ???????. ??? ???? ?? ??? ??? ?? ?? ?? ???? ???? ? ????.

???? PHP ?? ?? ???? PHP ?? ?? Jul 18, 2025 am 04:44 AM

?? ??????? ??? ?? ?? ??? ?? ????? ??? ???? ??? ????? ??? ??? ??? ??? ? ? ????. ??? ??? ??? ?? ???? ???? ?? ? ? ????. ??? ????? ???? ??? ??? ??, ?? ?? ?? ?? ? ?? ?? ??? ?????. ??? ?????? ???? ??? ??? ???? ? ? ??? ????? ??? ???? ????. ?? ?? ??? ???? ??, ??? ? ??? ?? ???? ?? ?? ? ?? ?? ???? ??? ????????. ??? ??? ?? ??? ??? ???? ?? ??? ?? ? ? ????. ??? ??? ???? ?? ??? ???? ?? ?? ?? ??? ??????.

???? ??? ?? ???? ??? ?? Jul 18, 2025 am 04:46 AM

?? ??? ???? ??? ??? ???? ????? ?? "?? ? ?"? ??? "?"? ???? ????. 1. ??? ?? ?? ?? ??? ?? ??? ?? ??? ??? ???????. 2. ??? ??? ?? ?? ??? ???? ?? ?? ????? ???? ????? ?????. 3. ????? ??? ???? ??? ???? ????, ???? ???, ??? ?? ?? ???? ?????. 4. ??? ?? ? ? ??? ??? ???? ?? ??? ??? ??? ?? ??? ?? ?? ??? ??????.

?? PHP : ??? ??? ?? PHP : ??? ??? Jul 18, 2025 am 04:54 AM

tolearnpheffectical, startBysetTupaloCalserErverEnmentUsingToolslikexamppandacodeeditor -likevscode.1) installxamppforapache, mysql, andphp.2) useacodeeditorforsyntaxsupport.3)) 3) testimplephpfile.next, withpluclucincludechlucincluclucludechluclucled

?? PHP ?? ??? ?? PHP ?? ??? Jul 18, 2025 am 04:52 AM

toinstallphpquickly, usexampponwindowsorhomebrewonmacos.1. ??, downloadandinstallxAmpp, selectComponents, startApache ? placefilesinhtdocs.2

PHP ?? ?? ??? ? PHP ?? ?? ??? ? Jul 18, 2025 am 04:35 AM

phpblockommentsearseforwritingmulti-lleexplanations, temporlyblingcode, and generatingdocumentation.theyshouldnotbenesteTeRleftUnclosed.blockmentShelPindOcumentingFunctionSwitHphPDoc, whatlsoompsTormuseforauto-CompletionAnderRorChe

See all articles