【explode/implode】PHPでカンマ区切り文字列を変換する方法

PROGRAM

今回は、PHPでカンマ区切り文字列を変換する方法について、explode関数とimplode関数を使う方法に分け、簡単に解説していきます。

explode関数を使ってカンマ区切り文字列から配列に変換する方法

カンマ区切りの文字列をPHPの配列にしたい場合があると思います。

そのような場合には、以下のようにして文字列から配列に変換します。

$names_string = "山田,田中,髙橋";
$names_array = explode(",", $names_string); // カンマ区切り文字列から配列に変換

上記のコードのように、explode関数を使って、第一引数に区切り文字、第二引数に文字列を指定することで、文字列が配列化されます。

implode関数を使って配列からカンマ区切り文字列に変換する方法

一方で、PHPの配列からカンマ区切りの文字列に変換したい場合もあると思います。

このような場合にも、PHPの標準関数だけで、以下のように配列から文字列に変換できます。

$names_array = array("山田","田中","髙橋");
$names_string = implode(",", $names_array); // 配列からカンマ区切り文字列に変換

上記のコードのように、implode関数を使って、第一引数に区切り文字、第二引数に配列を指定することで、配列が文字列化されます。

CSVファイルの読み込みや書き出しを行う方法

CSVファイルを取り扱う場合は、別の関数を使うことが一般的です。

$filepath = "hoge.csv";
$buffer = file_get_contents($filepath);
$fp = tmpfile();
fwrite($fp, $buffer);
rewind($fp);
while ( ($row = fgetcsv($fp)) !== false) {
    // $rowを使って各行の処理を書く
}

CSVファイルを読み込む場合は上記のように、fgetcsv関数を用いることが多いです。

$filename = "hoge.csv"; // CSVファイルの名前
$filedata = array(); // 連想配列の配列や配列の配列
header("Content-Type: application/octet-stream; charset=utf-8");
header("Content-Disposition: attachment; filename=".$filename."; filename*=UTF-8''".rawurlencode($filename));
$file = fopen('php://output', "w" );
foreach($filedata as $row) {
    fputcsv($file, $row); // 配列の各要素をCSVにしていく
}
fclose($file);

一方で、CSVファイルを書き出す場合には、上記のようにfputcsv関数を使うことがしばしばあります。