Archives for posts tagged ‘CSV’

PHPでCSVを用いた場合のあいまい検索

もう一つPHPでつまづいたのでメモ。
1つ前のエントリーで書いた「2次元配列のソート」と同時につまったのが、「CSVデータの中身をあいまい検索」。
SQLならそもそもLikeコマンドがあるからいいんですけど、CSVデータだとただの配列なのでどーしたものかと。
これもすごく悩みました。
さっさと結論を書くと、配列を要素数分forかなんかで回して、similar_textでマッチする文字数を検索でした。
similar_textは比較対象と検索文字の類似性を求める関数です。
 
って、わかりづらいですね。コード書きます。
 

//$itemsは元の配列
//$cは合致した文字数
//$wordは検索文字
for($i=0;$j<count($items);$i++){
     $c=similar_text($word,$items[$i]);
     if($c==strlen($word)){
      //合致した場合の処理
     }
 }

ここでのポイントは元の検索文字のバイト数とsimilar_textを用いて得られた結果の文字数で整合性を取っている部分です。
ここを同じにしておかないと、検索元の文字の一部が含まれているだけで合致したことになってしまうので・・・。
けど、そこは「もしかしたら~」の検索に使えるかもですね。

PHPでの2次元配列のソート

今回はなんとなくPHPです。
なぜかというと、凄く追い込まれてしまったのでメモ的に載せます。
2次元配列のソートをしたい場合なのですが、方法としてはarray_multisortかusortを使う方法があると思います。ってか、自分が無知なだけかもしれませんがこれ以外知りません。
んで、CSVにあるデータを配列化して出力するってのをよくやってるのですが非常に困りました。
やった手順としては
 
1.CSVデータを配列として取得
2.その配列をusortを使ってソート
 
これだけでできるはずですよね?
しかし、なぜかできず・・・1時間以上悩みました。
んで、いろいろと考えているうちに気づきました。
 
「あ、CSVを2次元配列で取得してない・・・」
 
そう、ただの1次元?配列でしか取得してませんでした・・・。
ってことで、配列で取得したあとに2次元配列化してやっとこ完成。
あー、よかった。

Get Adobe Flash playerPlugin by wpburn.com wordpress themes

Bad Behavior has blocked 31 access attempts in the last 7 days.