php 生成csv文件自动保存本机或服务器 2023-02-2

2023-02-23  本文已影响0人  阿然学编程
/**
 * 生成csv并自动保存到服务器或本地
 * @param array $data 查询的数据
 * @param array $title 标题
 * @param $file_path    保存的文件路径(如果没有请自行创建相关文件夹及目录)
 * @return bool
 */
function sc_csv(array $data = array(), array $title = array(), $file_path)
{
    ini_set('memory_limit', '-1'); // 设置最大内存限制为无限制
    ini_set('max_execution_time', 0); // 设置最大执行时间为无限制

    //打开CSV文件
    //$file = @fopen($file_path, 'a');
    $file = @fopen($file_path, 'w');

    if ($file) {
        foreach ($title as $v) {
            $header[] = iconv('UTF-8', 'GB2312//IGNORE', $v);
        }
        fputcsv($file, $header);

        $calc = 0;
        $limit = 1000;
        foreach ($data as $row) {
            $calc++;
            if ($limit == $calc) {
                ob_flush();
                flush();
                $calc = 0;
            }
            foreach ($row as $t) {
                $tarr[] = iconv('UTF-8', 'GB2312//IGNORE', $t);
            }

            fputcsv($file, $tarr);
            unset($tarr);
        }
        unset($data);

        //关闭文件
        $res = fclose($file);

        return $res;
    }
    return false;
}
    public function index()
    {
        //文件要保存在本地或者服务器的路径
        $path = '../test.csv';
        //添加表头
        $header = array('Name', 'Age', 'Gender');
        //添加数据行
        $data = array(
            array('John', '25', 'Male'),
            array('Mary', '30', 'Female'),
            array('Bob', '40', 'Male')
        );
        
        if ($sc_csv($data, $header, $path) === true) {
            return '生成成功';
        };
        return '生成失败';
        exit();
    }
上一篇下一篇

猜你喜欢

热点阅读