为了账号安全,请及时绑定邮箱和手机立即绑定

PHP实现文件内容的分页读取

标签:
PHP

/**

     * 文件内容分页读取函数

     * @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() ) {

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

                            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;

    }

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消