タブ区切りのファイルから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 になってた。
とりあえずググった。見つけたのはこれ。
なるほど。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 をカンマに置き換える とかしなくてよかったじゃん!
とおもったけど、後の祭り。
ということで、皆さんご自由にお使いください(ほとんど丸コピだけど。。。)
なにはともあれ、出来る限り簡単にデキるようにつくったから、ダメージはほとんどない。
よかった。