固定長データ
Posted feedbacks - PHP
検証等全く行ってない一発書きですが、とりあえず。 普通は配列に取込んだ後、DBに格納したりする訳ですが、今回データの加工は要らないそうなので、そのままです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | <?php
$path = "./";
$file = "data.txt";
$rsz = 46596;
$ary["SEI"] = 12;
$ary["MEI"] = 12;
$ary["SEIBETSU"] = 1;
$ary["NENREI"] = 3;
$ary["NEN"] = 4;
$ary["TSUKI"] = 2;
$ary{"DATA"] = 46562;
$fp = fopen($path.$file,"rb");
while ( !feof($fp) ) {
$data = array();
$stcm = 0;
$line = fread($fp,$rsz);
foreach ( $ary as $key => $val ) {
$data[$key] = substr($line,$stcm,$val);
$stcm += $val;
if ( $key == "DATA" ) {
for ( $i = 0; $i <= $val; $i += 1502 ) {
$day = substr($data[$key],$i,2);
$data[$day]["ASA"] = substr($data[$key],$i+2 ,500);
$data[$day]["HIRU"] = substr($data[$key],$i+502 ,500);
$data[$day]["YORU"] = substr($data[$key],$i+1002,500);
}
}
}
}
fclose($fp);
?>
|


Mymelo #6060() Rating5/7=0.71
固定長のデータが記載されたファイルを読み込むプログラムを作成してください。読み込んだデータは、複数の値を格納できるデータ型に格納してください。
ファイルには、すべて ascii 文字で以下のデータが格納されています。デリミタはなく、固定長で格納されています。レコードとレコードのあいだも改行はありません。
以上の形式のデータ500人分を読みこんで、データを複数の値を格納できるデータ型に格納してください。データに大して何か処理を行う必要はなく、すぐに破棄してかまいません。
この問題は、このようなファイルをどのように扱うかを知りたくて作成しました。
[ reply ]