- 2008年6月 7日 01:09
- 覚え書き
簡易データベースとしてcsvファイルを使用するのですが、「手軽に」と思ったのが大きな失敗でした。
心理的にsqlを使用するより簡単と思い込んでいたのですが、逆に手間が掛かった感は否めません。
具体的には、項目別にソートさせる仕様で壁にぶちあたりました。
色々考えた結果、csvデータは二次元配列に格納して、配列内であれこれ操作することにしました。
(セオリーがわからないのでこれが正しい選択肢なのかもわかりませんが・・。)
二次元配列とは、配列の値に配列を入れるということで、csvデータの列情報を$listにその情報を行情報として$arrayに格納しました。
$file = fopen($fname, "r");
$i=0;
while (($line = fgetcsv($file, 10000, ",")) !== FALSE) {
$array[$i]=$line;
$i++;
}
fclose($file);
こんな感じでしょうか、ただなんとなく貧弱そうなのでfgetcsvに@をつけたり、ファイルロックを付けたりしてみました。
$file = @fopen($fname, "r");
if (flock($file, LOCK_SH)){
$i=0;
while (($line = fgetcsv($file, 10000, ",")) !== FALSE) {
$array[$i]=$line;
$i++;
}
flock($file, LOCK_UN);
}else{
print('ファイルロック失敗');
}
fclose($file);
やりたい事を言語に落とし込むことに頭が慣れていないので、これだけでかなり疲れました。。
道のりは長いです。
- Newer: PHP覚書:二次元配列のソート
- Older: PHP覚書:foreach