function index(){
$file = ["kline/PUJ_USDT_minute.csv"]; //文件路径
$data = $this->filePage($file,10,20); //调用
var_dump($data);
}
/**
* 文件内容分页读取函数
* @param string/Array $file_path_arr 文件名
* @param int $start 分页起始行数
* @return json
* @author gongzheng <990653058@qq.com>
* @since 2014年2月10日 15:23:51
*/
function filePage( $file_path_arr, $start, $limit = 10 ) {
$data = array( ); //返回数据格式
$line = -1; //数据总行数的统计
foreach ( $file_path_arr as $key => $file_path ) {
$file_handle = new \SplFileObject( $file_path );
$file_line = -1;
while ( !$file_handle->eof() ) { //检测文件是否到末尾,如果到末尾返回true,否则返回false
$line++;
$file_line++;
if ( $line == $start ) {
for ( $i = 0; $i < $limit; $i++ ) {
if ( !$file_handle->eof() ) {
$file_handle->seek( $file_line ); //定位到文件指定行
$line_arr = str_getcsv( $file_handle->current() ); //函数解析 CSV 格式字段的字符串,并返回包含所读取字段的数组。
if ( isset( $line_arr[2] ) ) {
$data[] = $line_arr;
}
}
$file_line++;
}
$current_key = $key + 1;
//如果小于$limit接着读取下一个文件
if ( isset( $file_path_arr[$current_key] ) ) {
while ( count( $data ) < $limit ) {
if ( !isset( $file_path_arr[$current_key] ) ) {
break;
}
$file_handle = new \SplFileObject( $file_path_arr[$current_key] );
$num = $limit - (count( $data ));
for ( $i = 0; $i < $num; $i++ ) {
if ( !$file_handle->eof() ) {
$file_handle->seek( $i );
$line_arr = str_getcsv( $file_handle->current() );
if ( isset( $line_arr[2] ) ) {
$data[] = $line_arr;
}
}
}
$current_key++;
}
}
break;
}
}
break;
}
return $data;
}
分页读取文件 php
最新推荐文章于 2022-01-05 10:24:02 发布