gorogoroyasu

福岡の開発会社で働いている。

タブ区切りのファイルからPHP の配列を作り出すためにやったこと。

タブ区切りのファイルからPHP の配列を作り出すためにやったことを書いていきます。

やりたかったこと。

[
    ['hoge' => 'name1', 'fuga' => 'namae1'],
    ['hoge' => 'name2', 'fuga' => 'namae2'],
    ['hoge' => 'name3', 'fuga' => 'namae3'],
    ・
    ・
    ・
];

みたいな配列を作りたかった。

元データは、

hoge fuga
name1 namae1
name2 namae2
name3 namae3
name4 namae4
name5 namae5
name6 namae6

みたいなの(読み込むやつ.csv)。これがTSV になってた。

とりあえずググった。見つけたのはこれ。

qiita.com

なるほど。CSV ならうまいこと変換できるのか。

ということで、おもむろにatom を開き、 tab を全部 カンマに置換した。
これで、CSVの完成(たぶん)

書いたコードはこんだけ。

readCSV.php

<?php

$file = new SplFileObject('./読み込むやつ.csv');
$file->setFlags(SplFileObject::READ_CSV);
$array = [];
foreach ($file as $line) {
    $array[] = [
        "'hoge'" => "'".$line[0]."',",
        "'fuga'" => "'".$line[1]."',",
    ];
}
print_r($array);

そして、
php readCSV.php > text.txt

を実行。
できた配列の書き出しとか作るとめんどくさいからね!

そして、text.txt をエディタで開く。
ARRAY が含まれている行を全部削除
-> ([に全置換
-> )],に全置換

これで、全部配列に変換された。

一件落着。

全部変換してくれるプログラムが理想だけど、
別に何度も使うものじゃなかったら、これぐらい手動のオペレーションがあってもいいよね?

後日談

頑張ったのに、こんなのあった。 このスクリプト使えば、 TSV -> 配列の変換簡単じゃん!
tab をカンマに置き換える とかしなくてよかったじゃん!

qiita.com

とおもったけど、後の祭り。
ということで、皆さんご自由にお使いください(ほとんど丸コピだけど。。。)

なにはともあれ、出来る限り簡単にデキるようにつくったから、ダメージはほとんどない。
よかった。