勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPでCSVファイル出力用の関数

   2024/01/12  PHP

ここのところログ系をCSVファイル出力にするケースが多かった為、使いまわせるように関数のメモ。

 

ソース

function createCsv( $title, $data, $name ){ //title(array),data(array), name(string)
    if( !is_array($data) || empty($data) ) return false;
    $csv = '';
    if( is_array($title) && !empty($title) ){ //タイトルがある場合は1行目に挿入
        $csv .= implode(",", $title) . "\n";
    }
    foreach( $data as $val ){ //中身を挿入
        $csv .= implode(",", $val) . "\n";
    }
    if( $csv ){ //CSV出力
        mb_convert_variables('SJIS', 'UTF-8', $csv);
        $fileName = ( $name ) ? $name . ".csv" : date("YmdHis") . ".csv"; //CSVファイルの名前指定の有無
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename=' . $fileName);
        echo $csv;
        exit();
    } else {
        return false;
    }
}

 

使い方

$title = array('番号', '得点', '名前');
$data = array(
    0 => array(
        'code' => '1', 
        'point' => '75', 
        'name' => 'hoge', 
    ),
    1 => array(
        'code' => '2', 
        'point' => '30', 
        'name' => 'fuga', 
    ),
    2 => array(
        'code' => '3', 
        'point' => '55', 
        'name' => 'foo', 
    ),
);
$name = '得点表';
if( !createCsv($title, $data, $name) ){
    echo 'error!';
}

 - PHP

  関連記事

PHPで配列データをCSVとしてダウンロードさせる方法

PHPでログ的なデータをCSV化したかった。ただ、複数の人間が使うのでCSVファ ...

PHPでCSVを簡単に取り扱える「LeagueCSV(thephpleague / csv)」の利用方法

PHPでCSVファイルの書き込みや読み込みを行う際、バニラPHPで対応していたが ...

CSVファイルを使って郵便番号から住所を抽出する

■ソース <? error_reporting(E_ALL & ~ ...

PHPからCSVファイルを出力する際にメモリを節約する方法

MySQLよりデータを大量に取り出してCSVファイル化し、ダウンロードさせるとい ...

PHPで簡単にCSVファイルの生成

簡単にデータ並べるだけのCSVファイル生成。 file_put_contensで ...